由于多个类,jQuery和If语句不匹配

时间:2010-09-12 01:17:13

标签: jquery

我有DOM元素我想通过添加类“noEdit”从.click函数中排除我遇到的问题是这些元素中的一些有多个类,即:

<td class="firstCol noEdit"> // <-- wont work
<td class="noEdit"> // <-- works fine

和jQuery:

$('td').click( function(){
    if($(this).attr('class') != "noEdit"){
        alert('do the function');
    });

想法?

3 个答案:

答案 0 :(得分:7)

如果使用class查询attr()属性,它只会将值作为单个字符串返回。然后,您的第一个<td>条件失败,因为您的代码将尝试比较

"firstCol noEdit" != "noEdit"

返回true(因为它们不相等)并导致显示警报。

您需要查看hasClass()函数,它会为您解析类列表并检查属性中是否存在给定类:

$('td').click(function() {
    if (!$(this).hasClass("noEdit")) {
        alert('do the function');
    }
});

答案 1 :(得分:4)

如何使用属性过滤器:

// != means 'not exactly matching', whereas *= means 'contains'
$('td[class!=noEdit]').click( function(){
    alert('do the function');
});

答案 2 :(得分:3)

您可以使用jQuery's not() traversal清除它:

$('td').not('.noEdit').click(function() {
  alert('do the function');
});