Javascript 如果分配了多个类,如何检查类名称?

Javascript 如果分配了多个类,如何检查类名称?,javascript,html,Javascript,Html,我想用JS检查类名。但是由于元素有几个类,所以使用的命令似乎不起作用。我怎样才能查到一门课 HTML 类列表当前不可用 使用className.indexOf或className.split(…)或get-classList polyfill:classList当前不可用 在jQuery中使用className.indexOf或className.split(…)或获取类列表polyfill:: $( "#mydiv" ).hasClass( "foo" ) 在jQuery中: $( "#my

我想用JS检查类名。但是由于元素有几个类,所以使用的命令似乎不起作用。我怎样才能查到一门课

HTML

类列表当前不可用

使用className.indexOf或className.split(…)或get-classList polyfill:

classList当前不可用

在jQuery中使用className.indexOf或className.split(…)或获取类列表polyfill:

$( "#mydiv" ).hasClass( "foo" )
在jQuery中:

$( "#mydiv" ).hasClass( "foo" )

如果您想使用纯Javascript并避免使用第三方库

var trg = e.target;
if (trg.className.split(' ').indexOf('third_class') > -1) {
  console.log(trg);
}
如果直接在字符串上使用
indexOf
,可能会得到误报(例如,如果搜索“foo”并且有一个类“duol”,则会得到误报)


请注意,Internet Explorer<9不支持
indexOf
。如果您需要支持它,请使用一个或来自第三方库(如jQuery)的方法。

如果您希望使用纯Javascript并避免使用第三方库

var trg = e.target;
if (trg.className.split(' ').indexOf('third_class') > -1) {
  console.log(trg);
}
如果直接在字符串上使用
indexOf
,可能会得到误报(例如,如果搜索“foo”并且有一个类“duol”,则会得到误报)


请注意,Internet Explorer<9不支持
indexOf
。如果需要支持它,可以使用或来自第三方库(如jQuery)的方法。

包含的
是下划线方法-它使用的本机数组方法是
indexOf
-但是这两种方法都不起作用,因为
classList
返回的对象不是真正的数组,因此,我们需要将其应用于数组的
indexOf
方法:

if ( Array.prototype.indexOf.call( trg.classList, 'third_class' ) > -1 ) {
    console.log(trg);
}
但如果使用下划线,请执行以下操作:

if ( _.toArray( trg.classList ).contains( 'third_class' ) ) {
    console.log(trg);
}

contains
是下划线方法-它使用的本机数组方法是
indexOf
-但是这两种方法都不起作用,因为
classList
返回的对象不是真正的数组,所以我们需要将其应用于数组的
indexOf
方法:

if ( Array.prototype.indexOf.call( trg.classList, 'third_class' ) > -1 ) {
    console.log(trg);
}
但如果使用下划线,请执行以下操作:

if ( _.toArray( trg.classList ).contains( 'third_class' ) ) {
    console.log(trg);
}

据我所知,它应该是有效的。你使用的是旧的浏览器吗?据我所知,它应该可以工作。您使用的是旧浏览器吗?+1。这就是jQuery的优点(即跨浏览器支持)+1。这就是jQuery的优点(即跨浏览器支持),将类拆分为一个数组,然后调用indexOf不是更好吗?你也会避免错误的positives@SamuelBolduc第一种方法在类似数组的列表中使用数组的方法;第二种方法将列表转换为数组,然后使用快捷方式方法(该方法本身调用数组方法)。没有误报的危险。将类拆分为一个数组,然后调用indexOf不是更好吗?你也会避免错误的positives@SamuelBolduc第一种方法在类似数组的列表中使用数组的方法;第二种方法将列表转换为数组,然后使用快捷方式方法(该方法本身调用数组方法)。不存在误报的危险……但在这里,误报是可能的:当类被任何其他形式的空格分隔时,这将无法捕获它们。使用
classList
而不是
className
,而不是使用字符串操作和/或Regex(这可以解决这个问题),因为它已经知道各个类是什么。我在写它的时候想知道它,但我想“哦,类名总是用空格分隔的”。。。我仍然不知道在哪种情况下这是不正确的,但我想我们永远都不知道……但是在这里,错误的否定是可能的:当类被任何其他形式的空格分隔时,这不会捕获它们。使用
classList
而不是
className
,而不是使用字符串操作和/或Regex(这可以解决这个问题),因为它已经知道各个类是什么。我在写它的时候想知道它,但我想“哦,类名总是用空格分隔的”。。。我仍然不知道在哪种情况下这不是真的,但我想我们永远不知道。。。