繁体   English   中英

如何在通过jQuery中的属性过滤行的表中获取所有tr和td

[英]How to get all tr and td in a table that rows filtered by a attribute in jQuery

我有一个包含行的表,其中任何行都有一个称为entity-state的属性。 我从entity-state !== 'deleted'行中获得了所有td

<table>
    <tr entity-state="deleted"> 
        <td>1</td> 
        <td>2</td> 
    </tr>
    <tr entity-state="added"> 
        <td>3</td> 
        <td>4</td> 
    </tr>
    <tr entity-state="added"> 
        <td>5</td> 
        <td>6</td>  
    </tr>
</table>

我想获取仅added entity-state行中的所有td值。

您可以为此使用属性选择器:

$('tr[entity-state="added"]');
// or
// $('tr:not([entity-state="deleted"])');

您应注意, entity-state是非标准属性,将意味着您的HTML无效。 为了解决这个问题,您应该改用data-*属性:

<tr data-entity-state="deleted"> 
    <td>1</td> 
    <td>2</td> 
</tr>
<tr data-entity-state="added"> 
    <td>3</td> 
    <td>4</td> 
</tr>
$('tr[data-entity-state="added"]');

也可以使用filter()实现所需的功能,这在使用data-*属性时非常有用,因为通过jQuery更改其值不会更新DOM。

var $enabledRows = $('tr').filter(function() {
    return $(this).data('entity-state') == 'added';
    // or:
    // return $(this).data('entity-state') !== 'deleted';
});

您可以结合使用属性等于选择器:not() (或not() )选择器

$('tr:not([entity-state="deleted"])')

要么

$('tr').not('[entity-state="deleted"]')

 $('tr:not([entity-state="deleted"])') // or $('tr').not('[entity-state="deleted"]') .css('color', 'red') 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table> <tr entity-state="deleted"> <td>1</td> <td>2</td> </tr> <tr entity-state="added"> <td>3</td> <td>4</td> </tr> <tr entity-state="added"> <td>5</td> <td>6</td> </tr> </table> 

 $('table tr[entity-state=added]').each(function(i,v){ var $td = $(this).find('td') console.log($td.text()) }) 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table> <tr entity-state="deleted"> <td>1</td> <td>2</td> </tr> <tr entity-state="added"> <td>3</td> <td>4</td> </tr> <tr entity-state="added"> <td>5</td> <td>6</td> </tr> </table> 

  1. 为此使用attr选择器

您可以将not selector与attribute selector一起使用,

$("tr:not([entity-state='deleted']) td").each(function() {
  console.log($(this).text())
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM