试图使以下内容无济于事:仅在单击的任何内容不包含.remove的情况下,淡化类.completed的所有元素

$(document).on('click', ':not(.completed)', function(){
    $('.remove').fadeOut('fast');
});

最佳答案

我发现这是一个jQuery问题:

仅使用:not(.class)无法正常工作。 This jsfiddle 演示它。

如果您的.completed元素具有相同的标签名称,则可以添加有效的tagname:not("completed")(为什么?!)。

在我的示例中,它们是按钮,因此选择器变为button:not('.completed')

$(document).on('click', 'button:not(.completed)', function(e){
    $('.remove').fadeOut('fast');
});


JSFIDDLE

另一个解决方案是验证是否单击了元素hasClass('completed')

if ($(e.srcElement).hasClass("completed")) { return; }


JSFIDDLE

如果所有.completed元素都是div,则将选择器替换为div:not('completed')



同样,最好创建一个问题here。它将解决。

关于jquery - 除非元素包含特定类,否则在文档上触发事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17562810/

10-12 12:53