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

发布于 2024-10-21 12:57:20 字数 447 浏览 4 评论 0原文

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

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

有谁知道为什么当我运行此代码时,数据函数内部的 $(this) 返回 DOCUMENT 而不是 $posts 集合中的 li

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

My question is about "this" (selector context) within the jQuery $().find function.

My code below grabs a collection of li.
Then uses that collection to "find" an h3.
Then adds a div element after the h3 and attempts to use the $().data function to associate the new div element onto the h3 for later use.

Does anyone know why when I run this code the $(this) inside of the data function returns the DOCUMENT and not an li from the $posts collection?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心奴独伤 2024-10-28 12:57:20

是的,您暗示调用函数 find() 以某种方式创建了一个范围。 this 上下文只能在函数内创建:

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

如果 posts 集合中只有 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'));
});

yes, you are implying that calling the function find() somehow creates a scope. The this context can only be created within a function:

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

if it is the case that there will only be 1 h3 in the posts collection you could cache it.
Otherwise you are looking for the each method;

var $posts = $('#blog ul').children();
$posts.find('h3').each(function(){
  var $this = $(this);
  $this.after('<div/>').data('div', $this.parent().find('div'));
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文