我只是在玩jQuery,我偶然发现了Find函数。
我测试过这样:
$(document).ready(function(){
$('button').click(function(){
$('div').find('div').fadeOut(2000);
});
});
这个
$(document).ready(function(){
$('button').click(function(){
$('div div').fadeOut(2000);
});
});
两者都产生完全相同的结果。
区别是什么? :)
答案 0 :(得分:3)
在你的例子中没有区别,但有些情况你不能使用第一个,例如,不要说你有一个元素作为函数的参数,你想在其中找到div,然后你必须使用“查找”方法。
function foo(index, el)
{
$(el).find("div")...
}
但是当你知道确切的路径时,显然第二种方法是更多的抢夺。
答案 1 :(得分:2)
没有区别。
如果您已有jQuery对象,则find
方法很有用
否则,单个选择器就更简单了。
出于这个原因,大多数选择器都有方法等价物(.children()
,.first()
,.not()
)。
方法版本还允许您调用.end()
以返回上一个对象。
答案 2 :(得分:1)
他们都做了完全相同的事情,但在旧版浏览器document.querySelectorAll()
不可用(旧IE)$("div").find("div");
更快,正如Paul Irish在this comment here中确认的那样。
另外需要注意的是,在jQuery中你也可以这样做:
$("div", "#some-element")
哪个会在div
内搜索#some-element
。 jQuery实际上将其转换为:
$("#some-element").find("div")
所以总是建议使用.find()而不是传入上下文。
答案 3 :(得分:0)
在这种特定情况下,他们做同样的事情。请注意,find()
将遍历所有匹配元素的后代。