$(this).find(“li”)和$(“li”,$(this))之间的区别

时间:2013-03-28 09:13:35

标签: jquery

在创建jQuery插件时,我发现了

的许多用法
var obj = $(this);     
$("li:even", obj)

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

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

有人可以解释一下以便更好地理解吗?对此代码的引用是here

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分: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");