モーダルウィンドウがあります。その中には、ID がWebPartWPQ2のテーブルがあり、3 つの異なる状態の 3 つの異なるクラスがあります。クラスはms-applyfiltersinactive、ms-applyfiltersactive、ms-applyfiltershoveroverです。最初に、モーダル ウィンドウがポップアップすると、テーブルにはms-applyfiltersinactiveクラスが含まれます。内部の選択ボックスのオプションを変更した場合にのみ、テーブルのクラスがms-applyfiltersactiveに変更され、マウスをホバーすると、クラスがms-applyfiltershoveroverに変更されます。ウィンドウを閉じると、テーブルのクラスはms-applyfiltersinactiveにリセットされます。
要件は、テーブルがアクティブなとき、つまりクラスms-applyfiltersactiveまたはms-applyfiltershoveroverがある場合にのみ、テーブルにクリック イベントを設定する必要があることです。
私は使っている
$(document).on("click","#WebPartWPQ2 .ms-applyfiltersactive, #WebPartWPQ2 .ms-applyfiltershoverover", function(){
alert("Clicked");
});
これにより、クリック イベントをテーブルにアタッチできません。これは、テーブルのクラスがms-applyfiltersinactiveであるためである可能性があります。
次のコードを使用する場合
$(document).on("click","#WebPartWPQ2 table[class*='ms-applyfilter']", function(){
alert("Clicked again");
});
イベントは 3 つのケースすべてで発生しますが、これは望ましくありません。
hasClassおよびisイベントを使用してセレクターを除外しようとしました。
$(document).on("click","#WebPartWPQ2 table[class*='ms-applyfilter']", function(){
alert($(this).is("table.ms-applyfiltersactive"));
});
ただし、テーブルにクラスがある場合、これは同じブール値を返します。
これで私を助けてください。