2011-07-28 57 views
2

在我的页面上,我有多个具有指定类别的div,它们有2个span元素。我想检查第二个元素是否有特定的类,在第二个跨度之间添加新的跨度对象。如何在2个跨度之间添加跨度?

var allrtSp = $(".rtSp"); 
     for (i = 0; i < allrtSp.length; i++) { 
      var cls= $(allrtSp[i]).next().attr('class'); 
      var newSpan; 
      if (cls != 'rtMinus' && cls != 'rtPlus') 
      { 
       $(allrtSp[i]).add('<span class="rtNoChild"></span>'); 
      } 
     } 

我用上面的代码,但是这是行不通的。

+1

不知道为什么你这样做,看起来并不需要它。 – Dunhamzzz

+0

那该怎么办呢? – Ankit

+0

这可以在jQuery选择器中更简洁地完成,而不是混合原生JavaScript循环和jQuery节点遍历。请参阅下面的答案。 – andyb

回答

1

你不是应该使用

$(allrtSp[i]).after('<span class="rtNoChild"></span>') 

你必须将添加一个新的跨度allrtSp的子代码[I],而不是它和之间下一个跨度。

1

试试这个

var secondSpan; 
$(".rtSp").each(function(){ 
    lastSpan = $(this).find("span:last"); 
    if(lastSpan.hasClass("classNameToCheck")){ 
    lastSpan.before("<span class='rtNoChild'>text</span>"); 
    } 
}); 
+1

而不是'secondSpan = $(this).find(“span:eq(1)”);'为什么不使用'$(“.rtSp span:last-child”) '?因为他们说每个'div'都有两个'span'元素。 'n孩子(2)'也可以使用。 –

+0

是的,它可以使用。由于在问题中提到每个div只有2个跨度,所以我使用eq(1),最终给出相同的结果。 – ShankarSangoli

+0

我们还可以在每个函数http://api.jquery.com/last-selector/ –

0

检查与此代码: -

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>Jquery FROM CDN vs self host</title> 

    <script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.6.2.min.js" type="text/javascript"></script> 

</head> 
<body> 
<h1>Test</h1> 

<div class="divcssclass"> 
<span>Test1</span> 
<span class="particularClass">Test2</span> 
</div> 

<div class="divcssclass"> 
<span>Test3</span> 
<span>Test4</span> 
</div> 

<div class="divcssclass"> 
<span>Test5</span> 
<span class="particularClass">Test6</span> 
</div> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("div.divcssclass").each(function() { 
      var secondSpan = $(this).find("span:nth-child(2)"); 
      //alert(secondSpan.hasClass("particularClass")); 
      if (secondSpan.size() > 0 && secondSpan.hasClass("particularClass")) { 
       secondSpan.before('<span> Test </span>'); 
      } 
     }); 

    }); 
    </script> 
</body> 
</html> 
0

最简洁的,我能想到的:

$('div.rtSp span:nth-child(2).the_class').each(function() { 
    $(this).before('<span class="rtNoChild">2</span>'); 
}); 

以下HTML

<div class="rtSp"> 
    <span>1</span> 
    <span class="the_class">3</span> 
</div> 

会产生

<div> 
    <span>1</span> 
    <span class="rtNoChild">2</span> 
    <span class="the_class">3</span> 
</div> 
+0

超级!检查css类也做选择器本身...太棒了! –