jQuery选择器上下文在$()。find中不起作用

时间:2011-03-13 06:16:57

标签: jquery find this selector

我的问题是关于jQuery $()。find 函数中的“this”(选择器上下文)。

下面的代码抓取了li的集合。 然后使用该集合“找到”h3。 然后在h3之后添加一个div元素,并尝试使用 $()。data 函数将新的div元素关联到h3以供以后使用。

有没有人知道为什么当我运行这段代码时,数据函数里面的$(this)会从$ posts集合返回DOCUMENT而不是li

var $posts = $('#blog ul').children();
$posts.find("h3").after("<div></div>").data("div", $(this).parent().find('div'))

1 个答案:

答案 0 :(得分:1)

是的,你暗示调用函数find()会以某种方式创建一个范围。此上下文只能在函数中创建:

function(){
  this // now means the context of this function which might be window
}

如果是post集合中只有1 h3的情况你可以缓存它。 否则,您正在寻找each方法;

var $posts = $('#blog ul').children();
$posts.find('h3').each(function(){
  var $this = $(this);
  $this.after('<div/>').data('div', $this.parent().find('div'));
});