假设我想绑定(bind)下的所有项目

#mainDiv .user

除了
#mainDiv #exception .user

我能想到
$('#mainDiv .user').bind('event',function(){
    if($(this).parents('#exception').length>0){}else{
       // do stuff;
    }

});

或者:
$('#mainDiv :not('#exception').find('.user').bind('event',function(){
    if($(this).parents('#exception').length>0){}else{
       // do stuff;
    }

});

什么是更好的?

最佳答案

我可能会建议,而不是像

$('#mainDiv .user').not('#mainDiv #exception .user').bind('event',function()
{
    //do stuff
});

not() 函数采用以前存在的 jquery 集并从中删除符合作为参数传入的选择器的元素。

与同时使用选择器和 if 语句相比,预先过滤池更干净、性能更高(可能无关紧要,但这是一种很好的做法),并且一旦过滤完毕,就不需要 if 语句了。

作为旁注,过滤“#mainDiv #exception .user”对我来说似乎有点奇怪。 “#exception”应该是它自己的唯一标识符 - 除非您担心出于某种原因“#mainDiv”可能是“#exception”的子代。

关于jquery - 在 jquery 选择器路径中添加异常的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9541103/

10-11 13:32