0

私がしたいことは、 が他の と等しい を隠したい<li>というparent_idこと<li>ですgroup_id<li>がクリックされたときにそれら'<li>'を表示しますか?

これが私のサンプル<ul>で、PHP で生成されたものです。

ここに画像の説明を入力

PHP コード:

foreach($navs as $nav){
                                            echo '<li parent_id="'.$nav['parent_id'].'" group_id="'.$nav['group_id'].'"><a href="#'.$nav['group_id'].'" class="scroll" title="'.$nav['nav'].'">'.$nav['nav'].'</a></li>';
                                        }

出力例: ここに画像の説明を入力

4

2 に答える 2

2

あなたが試すことができます

$('#navigitions li[parent_id!="1"]').hide();

function hideSubItems(siblings) {
    if(siblings.length == 0) {
        return;
    }

    siblings.each(function(){
        var siblings = $(this).siblings('[parent_id="' + $(this).attr('group_id') + '"]').hide();
        hideSubItems(siblings)
    });
}

$('#navigitions li').click(function(){
        var siblings = $(this).siblings('[parent_id="' + $(this).attr('group_id') + '"]').toggle();
        hideSubItems(siblings)
    });

デモ:フィドル

于 2013-02-18T03:07:48.003 に答える
1
var ids = [],
    $li = $('li');

// Collect all group IDs
$li.each(function () {
    var group_id = $.attr(this, 'group_id');
    if ( ! ~$.inArray(group_id, ids) ) ids.push(group_id);
})
// Hide any li whose parent_id is in the ids array
.each(function () {
    if ( ~$.inArray($.attr(this, 'parent_id'), ids) ) $(this).hide();
})
// When an li is clicked, show any li whose parent_id is equal to this group_id
.click(function () {
    $li.filter('[parent_id=[' + $.attr(this, 'group_id') + ']').show();
});
于 2013-02-18T03:04:10.177 に答える