$('div div') 和 $('div').find('div') 之间的区别?
我只是在研究 jQuery,偶然发现了 Find 函数。
我这样测试:
$(document).ready(function(){
$('button').click(function(){
$('div').find('div').fadeOut(2000);
});
});
并且这
$(document).ready(function(){
$('button').click(function(){
$('div div').fadeOut(2000);
});
});
两者都产生完全相同的结果。
有什么区别? :)
I was just poking around with jQuery, and I stumbled upon the Find function.
I tested like this:
$(document).ready(function(){
$('button').click(function(){
$('div').find('div').fadeOut(2000);
});
});
And this
$(document).ready(function(){
$('button').click(function(){
$('div div').fadeOut(2000);
});
});
And both produce the exact same result.
Whats the difference? :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在您的示例中没有区别,但在某些情况下您不能使用第一个,例如,假设您有一个元素作为函数的参数,并且您想在其中查找 div,那么您必须使用“查找”方法。
但是当您知道确切的路径时,显然第二种方法更加稳健。
In your example there is no difference but there are cases that you can not use the first one, for example let't say you have an element as the parameter of a function and you want to find divs inside it, then you have to use the "Find" method.
But when you know the exact path, obviously the second approach is more robus.
没有什么区别。
如果您已经有一个 jQuery 对象,
find
方法很有用。否则,单个选择器会更简单。
因此,大多数选择器都有等效方法(
.children()
、.first()
、.not()
)。方法版本还允许您调用
.end()
返回到前一个对象。There is no difference.
If you already have a jQuery object, the
find
method is useful.Otherwise, a single selector is simpler.
Most selectors have method equivalents (
.children()
,.first()
,.not()
) for this reason.The method versions also allow you to call
.end()
to go back to the previous object.它们都执行完全相同的操作,但在旧版浏览器中
document.querySelectorAll()
不可用(旧 IE)$("div").find("div");< /code> 更快,正如 Paul Irish 在 此处评论。
另一件需要注意的事情是,在 jQuery 中,您还可以执行以下操作:
这将在
#some-element
内搜索div
。 jQuery 实际上将其转换为:因此始终建议使用 .find() 而不是传递上下文。
They both do exactly the same thing, but in older browsers where
document.querySelectorAll()
is not available (Old IEs)$("div").find("div");
is quicker, as Paul Irish confirms in this comment here.Another thing to note is that in jQuery you can also do this:
Which would search for
div
inside of#some-element
. jQuery actually converts this into:So it's always suggested to use .find() rather than pass in a context.
在这个具体情况下,他们做同样的事情。请注意,
find()
将遍历所有匹配元素的后代。In this specific case, they do the same thing. Note that
find()
will traverse all the descendants of the matched elements.