1

我很好奇。这个:

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

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

http://jsfiddle.net/NpT2b/

4

3 回答 3

7

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

它也不特定于 HTML 元素。$( $('#foo') )会工作。

我过去利用的一个原因是让函数接受选择器jQuery对象。所以我可以写一个函数:

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

可以安全地使用excite('.foo');或使用excite( $('p:not(.exciting-already)').empty() );

于 2012-07-07T20:49:01.527 回答
3

如果 jQuery 接收到一个 jQuery 对象,它不需要做任何事情,因此返回原样的 jQuery 对象。

这通常用于处理不道德的编码人员,他们可能会不小心将 jQuery 对象放回$()

于 2012-07-07T20:47:44.500 回答
2

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

于 2012-07-07T20:47:25.980 回答