$('div div')和$('div')之间的区别.find('div')?

时间:2011-06-19 16:02:03

标签: javascript jquery html find

我只是在玩jQuery,我偶然发现了Find函数。

我测试过这样:

$(document).ready(function(){

    $('button').click(function(){

        $('div').find('div').fadeOut(2000);

    });
});

这个

$(document).ready(function(){

    $('button').click(function(){

        $('div div').fadeOut(2000);

    });
});

两者都产生完全相同的结果。

区别是什么? :)

4 个答案:

答案 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()将遍历所有匹配元素的后代。