Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何测试使用jQuery选择的元素的类?_Javascript_Jquery - Fatal编程技术网

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

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')来获取

我有下面的代码,它应该使偶数行变为蓝色(layout-2有一个蓝色的背景)。我不希望这对类为“addtask”的表行起作用。出于某种原因,代码仍然会将addtask变为蓝色,尽管它不应该这样做。我该如何解决这个问题

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');