如何签入每个(),当前div有一个特定的类

时间:2013-07-05 09:09:00

标签: jquery

我必须检查div是否有class ='completed',然后添加Hello。如果什么都不做。 但是我写的代码是添加Hello,即使div中没有​​class ='completed'。

jssfiddle                           1             2             3
        
    

$(document).ready(function(){
  $( '#bar > div' ).each(function() { 
      if(($('.complete').length > 0)){
           var txt = $(this).find('.step-number').empty();
                     $(this).find('.step-number').after('<span class="hello">Hello</span>');
      }
  });
});

9 个答案:

答案 0 :(得分:1)

只需使用hasClass

  

确定是否为任何匹配的元素分配了给定的元素   类

答案 1 :(得分:1)

只需替换此代码

if($('.complete').length > 0){

用这个

if($(this).hasClass('complete')){

FIDDLE DEMO

实际上,在你的代码中

$('.complete').length

总是返回值2,因为你有两个带有该类的元素,因此$('.complete').length总是大于0.因此,即使div没有',它也会添加Hello t中有class ='completed'。

答案 2 :(得分:1)

使用jQuery&#39; hasClass("class-name")

答案 3 :(得分:0)

试试这个,

$(document).ready(function(){
  $( '#bar > div' ).each(function() { 
      if(($(this).hasClass('complete'))){
           var txt = $(this).find('.step-number').empty();
                     $(this).find('.step-number').after('<span class="hello">Hello</span>');
      }
  });
});

答案 4 :(得分:0)

尝试hasClass

$(document).ready(function(){
  $( '#bar > div' ).each(function() { 
     if($(this).hasClass('complete')){
           var txt = $(this).find('.step-number').empty();
                     $(this).find('.step-number').after('<span  class="hello">Hello</span>');
      }
  });
});

Working Demo

答案 5 :(得分:0)

为此必须使用hasClass

  

描述:确定是否有任何匹配的元素   分配给定的班级。

示例:<div id="mydiv" class="foo bar"></div>

如果将类分配给元素,则.hasClass()方法将返回true,即使其他类也是如此。例如,给定上面的HTML,以下内容将返回true:

$('#mydiv').hasClass('foo')

因此,在您的代码中,您应该使用if($(this).hasClass('complete'))

答案 6 :(得分:0)

您还可以在选择器中将complete指定为:

 $( '#bar > div.complete' ).each(function() { 
      var txt = $(this).find('.step-number').empty();
      $(this).find('.step-number').after('<span class="hello">Hello</span>');
  });

答案 7 :(得分:0)

您甚至不需要.each,您可以使用:has()选择器。

$(document).ready(function(){
    $('#bar > div:has(.completed)')
      .find('.step-number')
      .empty()
      .after('<span class="hello">Hello</span>');
});

答案 8 :(得分:0)

if(($('.complete').length > 0))中,您不会检查特定div是否包含类.complete,而只是选择.complete的所有元素。

您可以将循环更改为: $( '#bar > div' ).each(function(index, div) {...} 而不只是检查.hasClass() div是否具有所需的类。