如何测试使用jQuery选择的元素的类?

时间:2014-02-04 19:15:42

标签: javascript jquery

我有以下代码,应该使偶数行为蓝色(布局-2具有蓝色背景)。我不希望这对于带有'add-task'类的表行有效。出于某种原因,即使它不应该,代码仍然会变成添加任务蓝色。我该如何解决这个问题?

var it = $('.add-task');
if (it.className == 'add-task'){
}
else{
    $('table tbody tr:even').addClass('layout-2');
}

4 个答案:

答案 0 :(得分:1)

it是一个jQuery对象,而不是DOM节点。 jQuery有一个有用的hasClass方法,您可以使用:

var it = $('.add-task');
if (it.hasClass('add-task')) {
  ...
} else {
  ...
};

答案 1 :(得分:0)

您必须使用.attr('class')来获取所选元素的类。或者您可以使用.hasClass('className')检查所选元素是否具有该类。

尝试,

var it = $('.add-task');

//But .hasClass() should be a recommended one here
if(it.attr('class').indexOf('add-task') > -1){
  $('table tbody tr:even').addClass('layout-2');
}

或者您可以使用.toggleClass('className',switch)

$('table tbody tr:even').toggleClass('layout-2',it.hasClass('add-task'));

或者您可以使用本机JS对象

var it = $('.add-task');
if(it[0].className).indexOf('add-task') > -1){
  $('table tbody tr:even').addClass('layout-2');
}

答案 2 :(得分:0)

请记住,jquery返回一个dom元素数组。假设它是该类中唯一的元素,it[0].className == 'add-task'将会做到这一点。如果元素是唯一的,请考虑使用id。

答案 3 :(得分:0)

className不起作用,因为jQuery在辅助类中包装DOM元素以使它们更易于使用。但是,您可以将条件直接构建到选择器中:

$('table tbody tr:even not:(.add-task)').addClass('layout-2');