我的问题是关于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'))
答案 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'));
});