2012-11-15 123 views
0
<ul class="filter"> 
<li> 
<span class="filtertext"><span>Filter</span></span> 
<ul class="dropdown"> 
<li class="active"><a href="javascript:void(0)">All</a</li> 

<li><a href="#">Administrative Associates</a></li> 
<li><a href="#">Associate Principals</a></li> 
<li><a href="#">Associates</a></li> 
<li><a href="#">Chief Financial Officer</a></li> 
<li><a href="#">Directors</a></li> 
<li><a href="#">Principals</a></li> 
<li><a href="#">Senior Associates</a></li> 
<li><a href="#">Staff</a></li> 
</ul></li> 
</ul> 

我有一個設置了流沙的過濾器,上面的列表在我的網站上顯示了一個下拉菜單。我想要做的是將標籤中的文本「過濾器」替換爲所選類別中的文本。將點擊文本替換爲點擊鏈接的文本

我有這個工作,但是,它只是它第一次。我有一種感覺,我需要實現類似.each()的東西,但似乎無法弄清楚我應該把它放在哪裏。以下是我的jQuery代碼:

$('ul.dropdown li a').click(function(){ 
$('span.filtertext span').replaceWith($(this).html()); 
}); 

如果您需要更多信息,請讓我知道。謝謝!

回答

2

它只在第一次工作的原因是因爲您使用的是replaceWith,它實際上刪除了元素;下次你的函數運行時,$('span.filtertext span')找不到任何東西。

用這個代替(增加緩存太):

var $filtertext = $('span.filtertext span'); 
$('ul.dropdown li a').click(function() { 
    $filtertext.text($(this).text()); 
}); 
0

當你要更改的文字,你應該這樣做:

$('ul.dropdown li a').click(function(){ 
    $('span.filtertext span').html($(this).text()); 
}); 

因爲如果你使用replaceWith更換span,替換後沒有匹配'span.filtertext span'的對象...

0

我會使用jQuery的.text()來代替。

作品在http://jsfiddle.net/6kTQ5/

試試這個。

$('ul.dropdown li a').click(function(){ 
    $('span.filtertext span').text($(this).text()); 
});​ 
+0

只是好奇,因爲我相當新的jQuery ...背後使用.text()而不是.html()背後的原因是什麼?更高效? – kennycrippen

相關問題