$()的第二个参数是什么意思?

时间:2011-08-08 07:47:13

标签: javascript jquery html dom jquery-selectors

我有一个jQuery代码如下;

var favorites       = $("#favorites");
var favoritesFooter = $("#favoritesFooter",favorites);

我不确定逗号在第2个语句$("#favoritesFooter",favorites);

中的含义是什么

以下陈述在上述情况下会做什么或代表什么;

favoritesFooter.prev().after(newHTML);

2 个答案:

答案 0 :(得分:7)

这是$()的第二个参数。正如documentation

中所述
  

选择器上下文

     

默认情况下,选择器在DOM中从文档根开始执行搜索。但是,通过使用$()函数的可选第二个参数,可以为搜索提供备用上下文。例如,要在事件处理程序中进行搜索,可以限制搜索:

$('div.foo').click(function() {
  $('span', this).addClass('bar');
});
  

当搜索范围选择器仅限于此上下文时,只有单击元素中的跨度才会获得附加类。

     

在内部,选择器上下文是使用.find()方法实现的,所以$('span',this)相当于$(this).find('span')。

答案 1 :(得分:3)

第二个语句意味着“在jQuery对象favoritesFooter中搜索ID为favorites的元素”。

当你处理ID应该是唯一的时,它是没有意义的 - $("#favoritesFooter")是最好的做法。

关于favoritesFooter.prev()它也没有意义,假设ID是唯一的,因此你只有一个元素的集合,因此prev()将返回空的jQuery集合。

.prev()将采用之前的DOM元素 - 在您的情况下,它会在newHTML元素之前推送favoritesFooter