在以下代码中,hasClass
不起作用且结果为false
处于警报状态。为什么,我该怎么做?
在线演示: http://jsfiddle.net/Fe3CK/
HTML:
<span>
<div class="adding"></div>
</span>
JS:
alert($('span').hasClass('adding'));
答案 0 :(得分:7)
我认为你可能会误解.hasClass
的作用。它检查元素本身是否分配了这些类之一。来自documentation:
确定是否为任何匹配的元素分配了给定的类。
如果要检查元素是否包含该类的元素,请使用.has
:
将匹配元素集减少到具有与选择器或DOM元素匹配的后代的元素。
alert($('span').has('.adding').length > 0);
答案 1 :(得分:4)
你需要:
alert($('span div').hasClass('adding'));
因为您的span
没有任何课程adding
。只有你的跨度的孩子div有它。
<强> Updated Fiddle 强>
注意:内联元素中只能包含内联元素。 span是一个内联元素,因此像div或p这样的块级元素不能出现在span中。
因此,<div>
标记内的<span>
不是有效的HTML5标记,因此在这种情况下您应该使用<div>
而不是<span>
。
答案 2 :(得分:1)
答案 3 :(得分:0)
如果你想检查span的任何孩子是否有课程,那么你可以这样试试;
alert($('span').children().hasClass('adding'));
答案 4 :(得分:0)
alert($('span').children().hasClass('adding'));