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

Rob*_*osh 1 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>
Run Code Online (Sandbox Code Playgroud)

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

Javascript我在尝试:

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

Vis*_*ioN 7

使用:not()选择器:

$('td:not([data-id="123456"])').addClass('title_hide');
Run Code Online (Sandbox Code Playgroud)

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

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

演示: http ://jsfiddle.net/RFwJg/