我只是想知道哪种方法是使用变量浏览Dom的正确或最有效的方法。

例如,我可以串联选择器吗

var $container = '.my-container';
$($container).addClass('hidden');
$($container + ' .button').on('click', function(){
    //something here
});


还是应该使用jQuery遍历函数

var $container = $('.my-container');
$container.addClass('hidden');
$container.children('.button').on('click', function(){
    //something here
});


是否有不同的方法,是最好的方法,还是可以在不同的时间使用它们?

最佳答案

$通常仅在使用实际的jquery对象时使用。通常,您不应该为此添加任何前缀,除非它确实来自jquery。

不过,从性能角度来看,第二点代码将更快。我在这里做了一个jsperf示例:http://jsperf.com/test-jquery-select

第二部分代码更快的原因是(如果我没记错的话)jquery缓存了选择,然后对该选择执行的所有操作都受到作用域的限制。当您使用.find(这实际上是您在代码中的意思,而不是.children的含义)时,它不会尝试在整个文档中查找元素,而只会尝试在任何my-container范围内查找它们。

不想使用第二种模式的时间是您期望dom经常更改的时候。如果添加或删除更多按钮,则使用先前选择的项目虽然有效,但可能会成为问题。当然,如果您只是简单地对一个项目进行一些操作,然后仍然放弃选择,这不是问题。

除此之外,谁真的想连续输入$(...)。好尴尬

10-05 20:36
查看更多