我正在使用jquery'contains'选择器来确定单击div时要执行的操作...我想展开或折叠分面导航的一部分。
然而,看起来'contains'选择器可能只是在最初加载DOM时查看div的内容,并且没有看到较早的jquery调用换出的较新内容。
我有一个功能最强大的版本在这里工作......只需要一点推动就可以让顶部部分正常崩溃:http://jsfiddle.net/brianadkins/nAabP/
HTML:
<div class="facetname" id="facetname-fbr">
Brand
</div>
<ul class="facetvalues" id="facetvalues-fbr">
<li>facet1val1</li>
<li>facet1val2</li>
<li>facet1val3</li>
<li>facet1val4</li>
<li>facet1val5</li>
<li>facet1val6</li>
<li>facet1val7</li>
<li>facet1val8</li>
<li>facet1val9</li>
<li>facet1va10</li>
<li>facet1val11</li>
<li>facet1val12</li>
<li>facet1val13</li>
</ul>
<div class="slidermenu" id="slidermenu-fbr">
</div>
使用Javascript:
var ListLengthHidingTrigger = 7;
var InitialListItems = 4;
if ($("#facetvalues-fbr li").length > ListLengthHidingTrigger) {
$("#facetvalues-fbr li:gt("+(InitialListItems-1)+")").hide(); // hide all but first N sections
$('#slidermenu-fbr').html('Show All Brands');
}
$('div#slidermenu-fbr:contains("All")').click(function() {
$('#facetvalues-fbr li').show(); // hide all but first 2 sections
$('#slidermenu-fbr').html('Show Fewer Brands');
});
$('div#slidermenu-fbr:contains("Fewer")').click(function() {
$("#facetvalues-fbr li:gt("+(InitialListItems-1)+")").hide(); // hide all but first N sections
$('#slidermenu-fbr').html('Show More Brands');
});
$('#facetname-fbr').click(function() {
$('#facetvalues-fbr').slideToggle(0);
});
答案 0 :(得分:5)
尝试使用jQuery live()
http://jsfiddle.net/maniator/nAabP/8/
代码:
var ListLengthHidingTrigger = 7;
var InitialListItems = 4;
if ($("#facetvalues-fbr li").length > ListLengthHidingTrigger) {
$("#facetvalues-fbr li:gt("+(InitialListItems-1)+")").hide(); // hide all but first N sections
$('#slidermenu-fbr').html('Show All Brands');
}
$('div#slidermenu-fbr:contains("All")').live('click',function() {
$('#facetvalues-fbr li').show(); // hide all but first 2 sections
$('#slidermenu-fbr').html('Show Fewer Brands');
});
$('div#slidermenu-fbr:contains("Fewer")').live('click',function() {
$("#facetvalues-fbr li:gt("+(InitialListItems-1)+")").hide(); // hide all but first N sections
$('#slidermenu-fbr').html('Show All Brands');
});
$('#facetname-fbr').click(function() {
$('#facetvalues-fbr').slideToggle(0);
});
答案 1 :(得分:0)
你走在正确的道路上。如果您要查找“全部”这个短语,您需要在“显示所有品牌”和“显示更多品牌”之间做出决定。此外,没有理由将甚至处理程序绑定到同一个对象。可能更容易绑定一个,只需检查文本All
或其他相关内容。另外,请使用live()
http://jsfiddle.net/Jaybles/nAabP/7/
var ListLengthHidingTrigger = 7;
var InitialListItems = 4;
if ($("#facetvalues-fbr li").length > ListLengthHidingTrigger) {
$("#facetvalues-fbr li:gt("+(InitialListItems-1)+")").hide(); // hide all but first N sections
$('#slidermenu-fbr').html('Show All Brands');
}
$('#slidermenu-fbr').live('click',function() {
if ($(this).text().indexOf('All') >0){
$('#facetvalues-fbr li').show(); // hide all but first 2 sections
$('#slidermenu-fbr').html('Show Fewer Brands');
}else{
$("#facetvalues-fbr li:gt("+(InitialListItems-1)+")").hide(); // hide all but first N sections
$('#slidermenu-fbr').html('Show All Brands');
}
});
$('#facetname-fbr').click(function() {
$('#facetvalues-fbr').slideToggle(0);
});