如何检查类属性是否存在?

时间:2014-09-17 20:29:47

标签: javascript jquery

我试图检查<li> </li>标记中是否没有类标记。

例如,如果我有这个:

<li class="menu...."> words </li> 

我想忽略它。但是,如果我有这个:

<li> words </li> 

我想用它。

我目前所拥有的是:

$("li").each(function() {
    if ($(this).classList.contains('') {
        do function
    }
})

然而,这不起作用 - 我将如何做到这一点?

提前致谢

4 个答案:

答案 0 :(得分:6)

$('li:not([class])');

这将选择所有li元素,而不选择任何类。您也可以将[class]替换为特定类,或使用hasClass

答案 1 :(得分:4)

你可以这样做:

$("li:not(.menu)").whatever();

这不是最快的方式;这样做可能会更快:

$("li").filter(function() { return !$(this).hasClass("menu"); }).whatever()
如果您要对 no 类的<li>元素进行操作,请

编辑,然后只需检查.className属性:

$("li").filter(function() { return !$(this).prop("className"); }).whatever()

但是,我认为这不是一个好的编码模式。它很脆弱,因为它依赖于您页面的任何未来更改,其目的与您现在正在做的事情完全无关 not 涉及添加类。你最好明确检查你不感兴趣的特定类。

就像,也许3个月后,有人决定所有关于企鹅的清单项目都是黑白的。然后,将“penguin”类添加到所有<li>个元素中。如果你不记得你现在正在做的这种改变,那么突然之后功能就会被打破。

答案 2 :(得分:1)

您可以使用prop()

$("li").each(function() {

    if (!$(this).prop("class")) {

        doFunction();
    }
});

DEMO

答案 3 :(得分:0)

classList仅适用于Element个实例,而不适用于jQuery对象。

$("li").each(function() {
  if (this.classList.length === 0) {
    do function
  }
})