jQuery - 按子类选择父类?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/9557005/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-27 10:58:08  来源:igfitidea点击:

jQuery - select parent by child class?

jquerydom

提问by Moamen

How can I select the <tr>containing the child <div class="test">, as below?

如何选择<tr>包含 child <div class="test">,如下所示?

<table>
  <tr> <!-- this tr is what I want to select -->
    <td>
      <div class="test"> text </div>
    </td>
  </tr>
</table>

回答by T.J. Crowder

You can use parentsor closestfor that, depending on your needs:

您可以使用parentsclosest为此,根据您的需要:

$("div.test").parents("tr");
// Or
$("div.test").closest("tr");

(The initial selector can be anything that matches your div, so ".test"would be fine too.)

(初始选择器可以是与您匹配的任何东西div,所以".test"也可以。)

parentswill look all the way up the tree, possibly matching multiple trelements if you have a table within a table. closestwill stop with the first trit encounters for each of the divs.

parents将一直向上查找树,tr如果表中有表,则可能匹配多个元素。closesttr在每个divs遇到的第一个停止。

Here's an example using closest:

这是一个使用示例closest

Live copy| Live source

实时复制| 直播源

HTML:

HTML:

<table>
  <tr id="first"> <!-- this tr I want to select -->
    <td>
      <div class="test"> text </div>
    </td>
  </tr>
  <tr id="second"> <!-- this tr I want to select -->
    <td>
      <div class="test"> text </div>
    </td>
  </tr>
  <tr id="third"> <!-- this tr I want to select -->
    <td>
      <div class="test"> text </div>
    </td>
  </tr>
</table>

JavaScript:

JavaScript:

jQuery(function($) {

  var rows = $("div.test").closest("tr");
  display("Matched " + rows.length + " rows:");
  rows.each(function() {
    display("Row '" + this.id + "'");
  });

  function display(msg) {
    $("<p>").html(msg).appendTo(document.body);
  }
});

Output:

输出:

Matched 3 rows:
Row 'first'
Row 'second'
Row 'third'

回答by Iakovos Exadaktylos

Use selector :has() like:

使用选择器 :has() 像:

$("tr:has(div.test)");

Find jQuery documentation here :has() Selector

在此处查找 jQuery 文档:has() 选择器

回答by Frederick Behrends

$('.test').parent('tr')

this selects exactly what you want.

这正是您想要的选择。

回答by sinanakyazici

you should use

你应该使用

$('.test').parents('tr');

For Example:

例如:

http://jsfiddle.net/7T9nN/

http://jsfiddle.net/7T9nN/

回答by user2390741

The below targets the parent with class of .test somewhere within its children and in the below example changes background to red...

下面的目标是在其子级中某处具有 .test 类的父级,在下面的示例中将背景更改为红色...

$(document).ready(function(){
$('.test').parents('tr').css('background-color', 'red');
});

For me this is extremely powerful when trying to target exported html from indesign. Powerful because indesign does not let you tag 's but through this you can tag a and then the through this JQuery.

对我来说,这在尝试从 indesign 定位导出的 html 时非常强大。强大是因为 indesign 不允许你标记 's 但通过这个你可以标记 a 然后通过这个 JQuery。

回答by user1248376

$('.test').parent().parent();or $('.text').parent().closest('tr');

$('.test').parent().parent();或者 $('.text').parent().closest('tr');