2

我有一个模态窗口。在其中有一个 ID 为WebPartWPQ2的表,它将在三种不同的状态下具有三个不同的类。这些类是ms-applyfiltersinactivems-applyfiltersactivems-applyfiltershoverover。最初,当模态窗口弹出时,表格将具有ms-applyfiltersinactive类。只有在其中的选择框中更改选项时,表的类才会更改为ms-applyfiltersactive,然后在鼠标悬停时,该类会更改为ms-applyfiltershoverover。关闭窗口时,表的类重置为ms-applyfiltersinactive

要求是只有当它处于活动状态时,我才需要在表上有一个点击事件,即有一个类ms-applyfiltersactivems-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");
});

在所有三种情况下都会触发该事件,这是我不想要的。

我尝试使用hasClassis事件过滤掉选择器。

$(document).on("click","#WebPartWPQ2 table[class*='ms-applyfilter']", function(){
    alert($(this).is("table.ms-applyfiltersactive"));
});

但是当表有任何类时,这会返回相同的布尔值。

这个你能帮我吗。

4

1 回答 1

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;    
    }
});    

演示:http: //jsfiddle.net/PKWKn/11/

希望这可以帮助!

于 2012-12-27T16:36:13.060 回答