我有一个模态窗口。在其中有一个id为 WebPartWPQ2 的表,它将在三种不同的状态下有三个不同的类。这些类 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");
});
无法将click事件附加到表中。这可能是因为表的类是 ms-applyfiltersinactive 。
如果我使用以下代码
$(document).on("click","#WebPartWPQ2 table[class*='ms-applyfilter']", function(){
alert("Clicked again");
});
在我不想要的所有三种情况下都会触发事件。
我尝试使用 hasClass 和是事件过滤掉选择器。
$(document).on("click","#WebPartWPQ2 table[class*='ms-applyfilter']", function(){
alert($(this).is("table.ms-applyfiltersactive"));
});
但是当表有任何类时,它会返回相同的布尔值。
请帮我解决这个问题。
答案 0 :(得分:0)
没有HTML,我无法使用您当前的代码。但是,我已经创建了一个应该有帮助的例子。
我建议你做以下事情:
JAVASCRIPT:
$(document).on("click","#WebPartWPQ2", function(){
switch($("#WebPartWPQ2").attr("class")){
case 'ms-applyfiltersinactive':
//do something
break;
case 'ms-applyfiltersactive':
//do something
break;
case 'ms-applyfiltershoverover':
//do something
break;
}
});
DEMO:http://jsfiddle.net/PKWKn/11/
希望这有帮助!