Javascript 如何测试使用jQuery选择的元素的类?
我有下面的代码,它应该使偶数行变为蓝色(layout-2有一个蓝色的背景)。我不希望这对类为“addtask”的表行起作用。出于某种原因,代码仍然会将addtask变为蓝色,尽管它不应该这样做。我该如何解决这个问题Javascript 如何测试使用jQuery选择的元素的类?,javascript,jquery,Javascript,Jquery,我有下面的代码,它应该使偶数行变为蓝色(layout-2有一个蓝色的背景)。我不希望这对类为“addtask”的表行起作用。出于某种原因,代码仍然会将addtask变为蓝色,尽管它不应该这样做。我该如何解决这个问题 var it = $('.add-task'); if (it.className == 'add-task'){ } else{ $('table tbody tr:even').addClass('layout-2'); } 您必须使用.attr('class')来获取
var it = $('.add-task');
if (it.className == 'add-task'){
}
else{
$('table tbody tr:even').addClass('layout-2');
}
您必须使用
.attr('class')
来获取所选元素的类。或者可以使用.hasClass('className')
检查所选元素是否具有该类
试试看
或者您可以使用.toggleClass('className',switch)
或者您可以使用本机JS对象
var it = $('.add-task');
if(it[0].className).indexOf('add-task') > -1){
$('table tbody tr:even').addClass('layout-2');
}
它是一个jQuery对象,而不是DOM节点。jQuery有一个有用的方法,您可以使用:
var it = $('.add-task');
if (it.hasClass('add-task')) {
...
} else {
...
};
请记住,jquery返回一个dom元素数组it[0]。className=='addtask'
将执行此操作,假设它是该类的唯一元素。如果元素是唯一的,则考虑使用ID。 类名称不起作用,因为JAQuery在助手类中封装DOM元素以使它们更易于使用。但是,您可以将条件直接构建到选择器中:
$('table tbody tr:even not:(.add-task)').addClass('layout-2');
@jcsanyi是因为一个元素可以有多个类,例如,如果您想检查class
属性,您需要进行子字符串匹配(并处理空格等)。@jcsanyi解释是它
不是DOM元素,而是jQuery对象……假设这里缺少一些代码是否安全?如果您选择按类添加任务,您的第一个条件将始终为真(使用正确的比较)。太棒了,谢谢大家。我现在正在查看所有这些答案。@Mathletics,没有丢失的代码。if语句为空,因为我不希望在类为add-task时发生任何事情。但是您正在按类add task
选择项。您刚才选择的项目如何没有选择它的类?
var it = $('.add-task');
if (it.hasClass('add-task')) {
...
} else {
...
};
$('table tbody tr:even not:(.add-task)').addClass('layout-2');