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() );
});

如果您需要更多信息,请告诉我。谢谢!

4

3 回答 3

2

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

改用它(也添加缓存):

var $filtertext = $('span.filtertext span');
$('ul.dropdown li a').click(function () {
    $filtertext.text( $(this).text() );
});
于 2012-11-15T20:29:48.827 回答
0

当你想改变文本时,你应该使用这个:

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

因为如果你用replaceWith替换span,替换后就没有对象匹配'span.filtertext span'了...

于 2012-11-15T20:30:03.697 回答
0

我会改用 jQuery 的 .text() 。

http://jsfiddle.net/6kTQ5/工作

尝试这个。

$('ul.dropdown li a').click(function (){
    $('span.filtertext span').text( $(this).text() );
});​
于 2012-11-15T20:31:07.463 回答