使用已单击的链接中的文本替换单击文本

时间:2012-11-15 20:28:15

标签: jquery loops text each

<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>

我有一个使用Quicksand设置的过滤器,上面的列表显示了我网站上的下拉列表。我要做的是将标签中的“过滤器”替换为所选类别的文本。

我有这个工作,但是,它只是第一次这样做。我有一种感觉,我需要实现类似.each()的东西,但似乎无法弄清楚我应该把它放在哪里。以下是我的jQuery代码:

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

如果您需要更多信息,请与我们联系。谢谢!

3 个答案:

答案 0 :(得分:2)

它第一次起作用的原因是因为你使用了replaceWith,它实际上删除了元素;下次运行函数时,$('span.filtertext span')找不到任何内容。

改为使用它(也添加缓存):

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

答案 1 :(得分:0)

如果您想更改文字,您应该使用:

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

因为如果您使用replaceWith替换span,则替换后没有匹配'span.filtertext span'的对象...

答案 2 :(得分:0)

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

http://jsfiddle.net/6kTQ5/

工作

试试这个。

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