Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
jquery hasClass给出了错误的结果_Jquery_Dom - Fatal编程技术网

jquery hasClass给出了错误的结果

jquery hasClass给出了错误的结果,jquery,dom,Jquery,Dom,我以前使用过hasClass方法,但我有一个场景,其中报告为不存在,尽管如果我输出elements.html,它清楚地显示了item以及其他类正在使用该类 类所属的元素也被动态写入屏幕。知道我做错了什么吗 $('.myList').each(function (index, item) { // Check marked as complete if (!$(item).hasClass('complete')) { // Not complete

我以前使用过hasClass方法,但我有一个场景,其中报告为不存在,尽管如果我输出elements.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>

.hasClass检查与选择器匹配的特定元素。您似乎认为它会在元素内部搜索,以查看该类是否在元素中使用。它不是这样工作的。

.hasClass检查与选择器匹配的特定元素。您似乎认为它会在元素内部搜索,以查看该类是否在元素中使用。这不是它的工作原理。

是不是html中的一个子元素具有该类,而实际项目本身没有?我相信.hasClass只决定实际元素本身是否应用了css类。

是不是html中的一个子元素具有该类,而实际项本身没有?我相信.hasClass只确定实际元素本身是否应用了css类。

我猜您正在检查列表,您的意思是检查列表项

我认为你正在做的事情的例子:

HTML:

这不管用

以下是检查项目的方法:更改

致:


我猜你在检查列表,你的意思是检查列表项

我认为你正在做的事情的例子:

HTML:

这不管用

以下是检查项目的方法:更改

致:


你能显示你的动态生成的html吗?你没有给出工作的信息。我们没有看到任何生成相关项的标记或代码,也没有显示您提到的任何.html输出。我们看不到任何上下文或执行顺序能够以任何方式帮助你。你知道我做错了什么吗?是:不引用标记,也不显示您提到的.html结果。hasClass是有效的,所以在你的情况中有一些特定的东西你误解了,或者导致了不良行为,但是我们甚至不能开始推测它可能是什么。参见Mathias Bynens的回复。我怀疑正在为hasClass检查传递给$the.html调用的'item'是一个UL,它包含您添加到响应中的LI。在这种情况下,“item”没有类,它是an LI的子元素。请参阅我的编辑以了解详细信息。我不认为我的问题是如此可怕,以获得2票反对票,尽管缺少html输出。希望现在更清楚。你能显示你的动态生成的html吗?你没有提供任何工作信息。我们没有看到任何生成相关项的标记或代码,也没有显示您提到的任何.html输出。我们看不到任何上下文或执行顺序能够以任何方式帮助你。你知道我做错了什么吗?是:不引用标记,也不显示您提到的.html结果。hasClass是有效的,所以在你的情况中有一些特定的东西你误解了,或者导致了不良行为,但是我们甚至不能开始推测它可能是什么。参见Mathias Bynens的回复。我怀疑正在为hasClass检查传递给$the.html调用的'item'是一个UL,它包含您添加到响应中的LI。在这种情况下,“item”没有类,它是an LI的子元素。请参阅我的编辑以了解详细信息。我不认为我的问题是如此可怕,以获得2票反对票,尽管缺少html输出。希望现在更清楚,绝对正确。显示$item.html只显示元素包含的标记,而不是元素的标记。在某些浏览器中,存在一个名为outerHTML的属性,它将向您显示有问题的元素。但是.html只返回元素的innerHTML值。绝对正确。显示$item.html只显示元素包含的标记,而不是元素的标记。在某些浏览器中,存在一个名为outerHTML的属性,它将向您显示有问题的元素。但是.html只返回元素的innerHTML值。注意到我的目标是list类而不是item。这是最努力的答案,被标记为答案,谢谢。其中一个我想得太多的愚蠢错误是:注意到我的目标是list类而不是item。这是最努力的答案,被标记为答案,谢谢。其中一个我想得太多的愚蠢错误:
<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>
$('.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());
    }

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