使用 jQuery,你如何选择 $(this) 的子元素?

Posted

技术标签:

【中文标题】使用 jQuery,你如何选择 $(this) 的子元素?【英文标题】:Using jQuery, how do you select an element that is a child of $(this)? 【发布时间】:2013-09-08 08:15:06 【问题描述】:

粗略的 html 结构:

<div class="wrapper">
  <p></p>
  <p></p>
  <p></p>
</div>
<div class="wrapper">
  <p></p>
  <p></p>
  <p></p>
</div>
<div class="wrapper">
  <p></p>
  <p></p>
  <p></p>
</div>

假设我有这样的功能:

$('div.wrapper').each(function() 
    // more stuff
);

我基本上想做这样的事情:

$(this).('p:eq(2)').remove();

$(this).('p:contains("old text")').text('new text');

$(this)开头我只想选择其中的子元素。

【问题讨论】:

$('p', this)一样使用它作为上下文,或者像$(this).find('p')一样使用find() 【参考方案1】:

你可以这样做:

$('div.wrapper').each(function() 
    $('p:eq(2)', this).remove();
);

它使用this 作为与您要查找的元素相关的容器或父级。

$('div.wrapper').each(function() 
    $(this).find('p').eq(2).remove();
);

它使用.find() 来做和上面一样的事情。

jsFiddle example

【讨论】:

这似乎正是我想要的。谢谢!正如您在第一个示例中演示的那样,我还不明白您可以使用上下文。使用相同的第一个示例,您建议最简单的方法是在第一个之后包含仅针对包装器 DIV 的方法,但不包括第一个?我尝试了:gt(0).slice(),但没有成功。 如果您想对 div 做某事但不是第一个,您可以在末尾添加 .not(':first')。像这样jsfiddle.net/j08691/tvJ6e/1 道歉。我的意思是忽略第一个 div,然后只查找第二个及以后的项目。 啊,这同样简单。使用$('div.wrapper').not(':first')$('div.wrapper:gt(0)') 而不是$('div.wrapper')【参考方案2】:
$('.wrapper p').eq(1).remove();   

.find() 是您可以查找的另一种方法。

【讨论】:

【参考方案3】:

只获取$(this) 的孩子,您可以使用:

$(this).children();

【讨论】:

以上是关于使用 jQuery,你如何选择 $(this) 的子元素?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 如何使 $(this) 选择器触发多个类

jquery 多个选择器,包括“this”——最好的简洁语法

当涉及到“this”选择器时,jQuery 的层次结构是如何工作的?

你如何根据风格选择元素?

如何选择 $(this) JQuery 选择器选择的元素内的第一个 div?

如何使用 jQuery 选择第一个父 DIV?