私はこの条件を実行したい:
if ( this div has NO class firing on) {
// do nothing when click on it
} // else do something
出来ますか?
他の学生チームとのコラボレーションのコーディングの制約であるため、私はこのようにする傾向があります。しかし、それが混乱して不明確であるならば、私の質問を申し訳ありません。
質問を正しく解釈したかどうかはわかりませんが、イベントがトリガーされた要素に特定のクラスがある場合にのみ、特定のコールバックを実行したいと考えています。その場合、コールバックで次のようなことができます。
$("#someId").on("click", function () {
if (!$(this).hasClass("someClass"))
return false;
// Do your stuff here, if we get here, the element has the desired class
});
このソリューションでは、イベントをキャプチャしますが、目的のクラスが要素に含まれていない場合は、何もせずにコールバックを早期にエスケープします。
アップデート:
特定のクラスを探しておらず、クラスがまったくないことを確認したいだけの場合は、代わりに次のようにすることができます。
$("#someId").on("click", function () {
if ($(this).prop("class").length === 0)
return false;
// Do your stuff here, if we get here, the element has no class
});
要素にクラス(空のクラスではない)があるかどうかを委任して確認できます-今では、divにクラスがある場合にのみトリガーされます
$('parentelement').on('click','div:not([class=""])[class]',function(){
});
あなたは間違った方法でそれをやっています。操作したいクラスをdivに追加すると、セレクターまたはhasClassを使用できます。
これは問題の非常に漠然とした説明であり、非常に一般的な答えです。
$('div').each(function() {
if (!this.hasAttribute('class')) { //has no class
$(this).off(); //requires the use of on(), but removes all event handlers
}
$(this).on('click', ...)
});
あなたの質問がわかりません。しかし、私はあなたがこのようなものが欲しいと思います。
if($(this).hasClass('anyClass')){
//do nothing
return false;
}else{
//Do something
}
注: 間違った方法で達成しようとしています。いくつかの代替方法を考えてみてください。