jQuery,我想要一个解释。为什么这样做? $($( '格'))

时间:2012-07-07 20:44:58

标签: jquery css-selectors

我很好奇。这样:

$('div'), this $($('div')), and this $($($('div')))... and so on

似乎所有工作都是HTML元素的选择器。有谁知道为什么这样做,如果有任何实际的(除了冗余),这样做时会出现问题?

http://jsfiddle.net/NpT2b/

3 个答案:

答案 0 :(得分:7)

jQuery函数可以将现有的jQuery对象作为其参数。这是记录和故意行为。请在此处查看手册:http://api.jquery.com/jQuery/

它也不是HTML元素特有的。 $( $('#foo') )可行。

我过去利用的一个原因是让某个功能接受 选择器 < / strong>一个jQuery对象。所以我可以编写一个函数:

function excite(target) {
    $(target).append(' This is exciting!');
};

使用excite('.foo');excite( $('p:not(.exciting-already)').empty() );

进行通话是安全的

答案 1 :(得分:3)

如果jQuery收到一个jQuery对象,它不需要做任何事情,所以返回jQuery对象不变。

这通常是为了处理肆无忌惮的编码人员,他们可能会不小心将jQuery对象放回$()

答案 2 :(得分:2)

jQuery选择器将字符串,HTML元素或其他jQuery对象作为选择器。在这种情况下,您的第一个示例选择页面上的所有<div>元素。在第二个示例中,您将重新选择所有<div>元素的jQuery集。在第三个示例中,您将重新选择该集。除了彻底和完全冗余之外,这可以无限期地继续而没有任何问题。