如果使用data-id,则显示none

时间:2016-07-29 05:59:23

标签: javascript jquery html css

我有一个菜单,列出显示另一个列表中内容的项目。

MENU

<ul id="gallery-list" style="display: none;">
        <li class="close"></li>
        <li data-id="9425"><strong>item 1</strong></li>
        <li data-id="9426"><strong>item 2</strong></li>
        <li data-id="9488"><strong>item 3</strong></li>
        <li data-id="9489"><strong>item 4</strong></li>
        <li data-id="9495"><strong>item 5</strong></li>
        <li data-id="9427"><strong>item 6</strong></li>
</ul>

内容:

<ul id="gallery-container">
        <li data-id="9425">
            <h3 style="display: none;">Item 1</h3>
            <div class="content">Content here</div>
        </li>
        <li data-id="9426">
            <h3 style="display: none;">Item 2</h3>
        </li>
        <li data-id="9488">
            <h3 style="display: none;">Item 3</h3>
        </li>
        <li data-id="9489">
            <h3 style="display: none;">Item 4</h3>
        </li>
        <li data-id="9495">
            <h3 style="display: none;">Item 5</h3>
            <div class="content">Content here</div>
        </li>
        <li data-id="9427">
            <h3 style="display: none;">Item 6</h3>
            <div class="content">Content here</div>
        </li>
</ul>

在内容中,.content中有一些li。如何在其中使用data-id隐藏菜单部分中的项目?基本上菜单中的项目只有在.content

时才会显示

MENU的输出应该是这样的。

<ul id="gallery-list" style="display: none;">
        <li class="close"></li>
        <li data-id="9425"><strong>item 1</strong></li>
        <li data-id="9495"><strong>item 5</strong></li>
        <li data-id="9427"><strong>item 6</strong></li>
</ul>

或者这也应该没问题。

<ul id="gallery-list" style="display: none;">
        <li class="close"></li>
        <li data-id="9425"><strong>item 1</strong></li>
        <li data-id="9425" style="display:none;"><strong>item 2</strong></li>
        <li data-id="9425" style="display:none;"><strong>item 3</strong></li>
        <li data-id="9425" style="display:none;"><strong>item 4</strong></li>
        <li data-id="9495"><strong>item 5</strong></li>
        <li data-id="9427"><strong>item 6</strong></li>
</ul>

请注意,内容中的项目始终为display:none; onload trigger。

也使用这个脚本:

    $("#gallery-list li").click(function() {
        var id = $(this).data('id');
            $("#gallery-container").find('li').each(function() {
            $(this).find('.content').toggle($(this).data('id') === id);
            $(this).find('h3').toggle($(this).data('id') === id);
        });
    });
    window.onload = function () {
        $("#gallery-container li .content").css("display", "none");
        $("#gallery-container li h3").css("display","none");
        $("#gallery-container li p").css("display","none");
    }
    $('.gallery-menu h3, #gallery-list li').click(function(){
        $("#gallery-list, .gallery-menu h3").toggle();
    });

它控制列表的内容也激活菜单。

1 个答案:

答案 0 :(得分:2)

我的主意:
循环内容列表项,当内部没有Const BaseSQL = "SELECT [id] FROM quotation WHERE reference Like '%@jobno' AND version = @ver" strSQL = Replace(BaseSQL, "@jobno", jobno) strSQL = Replace(strSQL, "@ver", ver) 时,.content相关的菜单项。

remove

正如@XerenNarcy在评论中注意到的,您甚至可以使用$(function() { $("#gallery-container li[data-id]").each(function() { if( $(".content", this).length == 0 ) { $("#gallery-list li[data-id=" + $(this).data("id") + "]").remove(); } }); }); not()组合选择器:

has()

而不是$(function() { $("#gallery-container li[data-id]:not(:has(.content))").each(function() { $("#gallery-list li[data-id=" + $(this).data("id") + "]").remove(); }); }); 你甚至可以使用remove()

<强> Working example.