2012-07-12 70 views
3

我有一系列链接在UL。有些人的文字和一些不这样做,例如:JQuery:添加类到元素,如果它有文本

<ul> 
<li><a href="google.com">Google</a></li> 
<li><a href="yahoo.com">Yahoo</a></li> 
<li><a href="bing.com">Bing</a></li> 
<li><a href="#"></a></li> 
<li><a href="#"></a></li> 
<li><a href="#"></a></li> 
</ul> 

我想使用jQuery一类只适用于在他们的文字的一个标签。

到目前为止,我有这样的:

var buttontext = $('ul a').text(); 

if (buttontext.length > 0){ 
$('ul a').addClass('buttoneffect'); 
} 

但类仍然是影响所有一个标签。我只是想知道是否有人能够在这里指出我正确的方向?

感谢

+0

你能不能提醒buttontext的价值和检查? – 2012-07-12 03:29:50

回答

0
$("ul a").each(function (i, e) { 
    var $e = $(e); 
    if ($e.text().length > 0) { 
     $e.addClass("buttoneffect"); 
    } 
}); 
+0

谢谢。只是好奇,我在该功能自动增量或什么?它的目的是什么? – MeltingDog 2012-07-12 03:52:48

+0

@MeltingDog:您可能想要熟悉[jQuery文档](http://api.jquery.com/each/):是的,i参数是选择器找到的列表中元素的索引。 – 2012-07-12 03:56:24

1

这似乎最简单的,当我写它:

$('a').filter(
    function(){ 
     var child = this.firstChild; 
     if (child){ 
      return child.nodeType == 3 && child.nodeValue.length; 
     } 
    }).addClass('buttoneffect');​​ 

JS Fiddle demo

还是在普通的JavaScript:

var aElems = document.getElementsByTagName('a'); 

for (var i=0,len=aElems.length; i<len; i++){ 
    var child = aElems[i].firstChild; 
    if (child && child.nodeType == 3 && child.nodeValue.length >= 1) { 
     aElems[i].className += ' buttoneffect'; 
    } 
}​ 

JS Fiddle demo

相关问题