<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() );
});
如果您需要更多信息,请与我们联系。谢谢!
答案 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()代替。
工作试试这个。
$('ul.dropdown li a').click(function (){
$('span.filtertext span').text( $(this).text() );
});