jQuery hasClass对我不起作用?

时间:2014-02-18 06:23:30

标签: javascript jquery

在以下代码中,hasClass不起作用且结果为false处于警报状态。为什么,我该怎么做?

在线演示: http://jsfiddle.net/Fe3CK/

HTML:

<span>
    <div class="adding"></div>
</span>

JS:

alert($('span').hasClass('adding'));

5 个答案:

答案 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)

您必须选择div而不是span,因为div具有“添加”类

alert($('div').hasClass('adding'));

Demo

答案 3 :(得分:0)

如果你想检查span的任何孩子是否有课程,那么你可以这样试试;

alert($('span').children().hasClass('adding'));

答案 4 :(得分:0)

跨度内的div不是一个好习惯,你的span没有任何类添加,添加是它的子对象的类所以请使用像

alert($('span').children().hasClass('adding'));