2012-07-12 78 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

相關問題