【问题标题】:jquery partial expand and collapsejquery部分展开和折叠
【发布时间】:2011-03-30 19:44:17
【问题描述】:

我正在使用 jquery 'contains' 选择器来确定单击 div 时要执行的操作...我想展开或折叠分面导航的一部分。

然而,看起来“包含”选择器可能只在最初加载 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);
});

【问题讨论】:

    标签: javascript jquery faceted-search


    【解决方案1】:

    尝试使用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);
    });
    

    【讨论】:

    • 完全正确 - 因为在页面加载期间无法找到相关元素,所以 click 事件未作为处理程序附加。正如 Neal 指出的那样, .live() 方法将为您解决这个问题。 @Neal - 你在“..live”中有语法错误
    【解决方案2】:

    你走在正确的道路上。如果要查找短语“All”,则需要在“Show All Brands”和“Show More Brands”之间做出决定。此外,没有理由将偶数处理程序绑定到同一个对象。可能更容易绑定一个,只需检查文本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);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      相关资源
      最近更新 更多