jquery hasClass给出了错误的结果
我以前使用过hasClass方法,但我有一个场景,其中报告为不存在,尽管如果我输出elements.html,它清楚地显示了item以及其他类正在使用该类 类所属的元素也被动态写入屏幕。知道我做错了什么吗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
$('.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