Jquery select属性!=包含没有该属性的元素

时间:2009-06-15 17:41:17

标签: jquery

我正在尝试选择与给定属性ID不匹配的元素。基于以下简化示例,为什么$(“td [groupId!= 1]”)返回甚至没有groupId属性的元素?是否有另一种方法可以选择具有groupId的元素,其中值不是1?

<table border="1">
<tr>
    <td>Group 1</td>
    <td groupId="1">1 - 1</td>
    <td groupId="1">1 - 2</td>
    <td groupId="1">1 - 3</td>
    <td>2</td>
    <td groupId="2">2 - 1</td>
    <td>3</td>
    <td groupId="3">3 - 1</td>
    <td>Total</td>
</tr>
<tr>
    <td>1</td>
    <td groupId="1">1</td>
    <td groupId="1">1</td>
    <td groupId="1">1</td>
    <td>2</td>
    <td groupId="2">2</td>
    <td>3</td>
    <td groupId="3">3</td>
    <td>0</td>
</tr>
<tr>
    <td>1</td>
    <td groupId="1">1</td>
    <td groupId="1">1</td>
    <td groupId="1">1</td>
    <td>2</td>
    <td groupId="2">2</td>
    <td>3</td>
    <td groupId="3">3</td>
    <td>0</td>
</tr>
</table>

3 个答案:

答案 0 :(得分:4)

尝试:

$("td[groupId][groupId!='1']")

This type of selector匹配属性为groupId的所有元素,但只选择值不为1的元素。

答案 1 :(得分:3)

您可以执行以下操作,首先使用groupId!= 1选择所有td,然后选择具有从该jQuery集指定的groupId的那些:

$('td[groupId!= 1]').filter('[groupId]');

恕我直言这是完全逻辑,没有groupId的td有一个不会标记为1的groupId,因此被添加到结果集中。或者把它放在代码中:

var x = {};
typeof x.foo === 'undefined'; //true
x.foo !== 1; //true

答案 2 :(得分:3)

尝试$("td[groupId][groupId != 1]")

这将选择所有具有groupId的td,然后选择该组中没有值1的所有td。

PS。这是not运算符的documented behaviour