4

在创建 jQuery 插件时,我发现了很多用途

var obj = $(this);     
$("li:even", obj)

选择当前项目。这是如何运作的?因为在写 jQuery 代码片段时,我曾经写过

 $(this).find("li");

有人可以解释一下以便更好地理解吗?参考此代码是here

4

2 回答 2

4

两者做同样的事情。事实上,如果你深入挖掘,你会发现$("li:even", obj)最终调用obj.find("li:even").

您可能知道该$()函数(该变体)在 DOM 中查找元素。接受第二个参数的表单只是为它提供了一个起点,告诉它只在您作为第二个参数提供的 jQuery 集中查找元素的后代。当然,这是什么find

我记得看到一个 jQuery 主要开发人员对问题单的评论,他们正在考虑放弃$()接受起点的版本。

于 2013-03-28T09:14:42.343 回答
3

$("li:even", obj)

在上面的语句中,context传递给选择器。这等于$(this).find("li:even");

根据 jQuery 文档,选择器的语法是jQuery( selector [, context ] )

这四个都会带来相同的结果。

var obj = $(this);
$("li:even", obj) 

或者

$("li:even", this) 

或者

$("li:even", $(this)) 

或者

$(this).find("li:even");
于 2013-03-28T09:14:36.327 回答