获取不包含数据属性的所有元素

时间:2013-10-15 14:14:46

标签: javascript jquery html5

我有一个看起来像这样的表:

<table>
 <tr>
  <td data-col="firstname">Robert</td>
  <td data-col="middlename">E</td>
  <td data-col="lastname">McIntosh</td>
  <td data-col="email">example@gmail.com</td>
  <td data-col="title" data-id="123456">Programmer</td>
 </tr>
 <tr>
  <td data-col="firstname">John</td>
  <td data-col="middlename">M</td>
  <td data-col="lastname">Doe</td>
  <td data-col="email">j.m.doe@gmail.com</td>
  <td data-col="title" data-id="456789">IT Manager</td>
 </tr>
 <tr>
  <td data-col="firstname">Sue</td>
  <td data-col="middlename">L</td>
  <td data-col="lastname">Merser</td>
  <td data-col="email">s.l.merser@gmail.com</td>
  <td data-col="title" data-id="789123">Hates Her Job</td>
 </tr>
</table>

我想向所有title_hide元素添加一个标记为td的类,该元素不包含等于123456的数据属性ID?

Javascript我正在尝试:

$('table tr td:not([data-id="123456"])').closest('tr').addClass('title_hide');

4 个答案:

答案 0 :(得分:7)

使用:not()选择器:

$('td:not([data-id="123456"])').addClass('title_hide');

更新:根据您的更新,您似乎正在尝试将类添加到<tr>元素中,该元素内部没有<td data-id="123456">。在这种情况下,您可以使用以下方法:

$('tr:not(:has(td[data-id="123456"]))').addClass('title_hide');

DEMO: http://jsfiddle.net/RFwJg/

答案 1 :(得分:3)

你可以这样做:

$("table tr td:not([data-id=123456])").addClass("title_hide");

答案 2 :(得分:0)

不要尝试()

 $("td:not('[data-col]')").addClass('title_hide');

答案 3 :(得分:0)

<script type="text/javascript">
    jQuery(document).ready(function(){
        jQuery('td').not('td[data-id="123456"]').addClass('title_hide');
    });
</script>