jquery hasClass给出了错误的结果

时间:2011-03-07 15:34:37

标签: jquery dom

之前我使用过hasClass方法,但我有一个报告为不存在的场景,尽管如果我输出元素.html()它清楚地显示该类正由 item 使用和其他班级一样。

该类所属的元素也被动态写入屏幕。我有什么想法吗?

$('.myList').each(function (index, item) {

    // Check marked as complete
    if (!$(item).hasClass('complete')) {
        // Not complete
        alert('not complete!' + $(item).html());

        completeFlag = false;
        return false;
    }

});

html输出:

<li id="myid" class="class1 class2 complete">some text</li>

3 个答案:

答案 0 :(得分:3)

我猜您正在查看列表,您要查看列表

我认为你在做什么的例子:

HTML:

<ul class="myList">
  <li>This is not complete</li>
  <li>Nor this</li>
  <li class="class1 class2 complete">But this is</li>
  <li>And this isn't</li>
</ul>

JavaScript的:

$('.myList').each(function (index, item) {

    // Check marked as complete
    if (!$(item).hasClass('complete')) {
        // Not complete
        display('Item not complete: ' + $(item).html());
    }
    else {
        // Is complete
        display('Item IS complete: ' + $(item).html());
    }

});

Live copy(不起作用)

以下是检查项目:更改

的方法
$('.myList').each(function (index, item) {

为:

$('.myList li').each(function (index, item) {
//         ^--- Note that we're now looping the
// list *items*, not the list

Live copy

答案 1 :(得分:2)

.hasClass()检查与您的选择器匹配的特定元素。您似乎在考虑在元素内搜索以查看该类是否在那里使用。这不是它的工作原理。

答案 2 :(得分:1)

你的html中的元素之一是否有类但实际项目本身没有?我相信.hasClass()仅确定实际元素本身是否已应用css类。