【问题标题】:On-click drop-down nav menu点击下拉导航菜单
【发布时间】:2014-01-21 03:34:30
【问题描述】:

我正在制作一个带有一些下拉菜单的列列表,我需要 Jquery 的下拉菜单才能使其工作。

我为此找到了一些 Jquery,但问题是当您有两个带有 ul 和 li 的菜单时,就像这样。 HTML:

<ul class="list-menu">
<li class="sort-menu">4</li>
    <div class="sort-list-dropdown">
         <ul class="sort-list">
             <li>4</li>
         </ul>
    </div>
</ul>

当你复制这两次,然后当你点击类上的 4 时,sort-menu,它会放置两个菜单容器,那个类是 sort-list-dropdown 我一直在玩我从某个地方得到的 JS我对这个问题感到困惑。

JavaScript:

    $("ul.list-menu > li").click(function () {
    var X = $(this).attr('id');
    if (X == 1) {
        $("ul.sort-list > li").hide();
        $(this).attr('id', '0');
    } else {
        $("ul.sort-list > li").show();
        $(this).attr('id', '1');
    }
});

//Mouse click on sub menu
$("ul.sort-list > li").mouseup(function () {
    return false;
});

//Mouse click on my account link
$("ul.list-menu > li").mouseup(function () {
    return false;
});


//Document Click
$(document).mouseup(function () {
    $("ul.sort-list > li").hide();
    $("ul.list-menu > li").attr('id', '');
});

我得到了一些变量,但我不认为这是代码。我想我需要输入一个新变量,但我不知道它需要什么。

如果有人知道如何做到这一点,请回复我。

【问题讨论】:

  • 那么,唯一的问题是你的两个菜单是同时打开和关闭的?
  • 您的目标是同一个班级。因此,如果您要创建两个具有相同类名的元素,那么 jQuery 将会同时看到它们。你需要定位 $(this).parent('ul');
  • 我在 JS 中看到您正在寻找属性“id”-但在您的 html 中没有任何元素有任何 id...如果问题如我上面的尼克所描述的那样-我建议查看 jQuery 最接近和子方法 - api.jquery.com/closestapi.jquery.com/children
  • 他将 ID 用作 toggle 的一种形式。注意他的 if/else 语句。
  • li 标签内只能有 ul 标签。拥有.sort-list-dropdown div 是无效的 HTML

标签: javascript jquery html css drop-down-menu


【解决方案1】:

我对这个问题有一个答案。请尝试以下代码:

$(document).ready(function() {
     $('.sort-list-dropdown').hide();
     $('ul.list-menu li').click(function() {
            $(this).next('.sort-list-dropdown').toggle();
     });
});

在代码“click”中,您可以将其更改为“hover”。

【讨论】:

  • 好电话。我正在等待标注以避免使用 var 布尔值作为他的切换:-P。
【解决方案2】:

试试这样的:

http://jsfiddle.net/SinisterSystems/bmwBr/5/

HTML:

<ul>

    <li class="sec">Heading One</li>
    <li><ul>
        <li>Secondary</li>
        <li>Secondary</li>
        <li>Secondary</li>
        <li>Secondary</li>
        <li>Secondary</li>

        <li class="sec">Heading Two</li>
        <li><ul>
            <li>Third</li>
            <li>Third</li>
            <li>Third</li>
        </ul></li>

    </ul></li>

    <li class="sec">Heading One</li>
    <li><ul>
        <li>Secondary</li>
        <li>Secondary</li>
        <li>Secondary</li>
        <li>Secondary</li>
        <li>Secondary</li>
    </ul></li>

</ul>

JS:

$(function(){
    $('li.sec').on('click', function() {
        $(this).next('li').slideToggle();
    });
});

CSS:

ul li {
    list-style:none;
}
.sec {
    background:#efefef;
    padding:25px;
    font-size:24px;
}

试试这样的:

http://jsfiddle.net/SinisterSystems/bmwBr/5/

【讨论】:

  • 总是尽量保持你的 JS 最小化。使用此代码,您只需将 sec li 类放在您想要的任何标题上,并在下面扩展 li 结构
  • 我喜欢它,但我需要点击,所以当您点击 4 时,它会显示要排序的内容。
  • 我确定你知道,但这不是问题所在。如果它解决了所提出的问题,请将此答案标记为已接受,以便未来的编码人员能够针对特定问题引用它。如果您想进一步澄清,请将代码复制到新问题中。
  • 除了 ID 名称之外,我没有看到任何关于您需要对数据进行排序的参考,因此我们需要进一步澄清。因此要求发布一个新问题 :-) 我整天都在处理问题,对于不同的问题,有人可能会比我有更好的答案。
  • 我不想要实际的排序数据。我只想要两个菜单,在它旁边,它将是一个 4 代表你所在的排序。然后当你点击它时,它会弹出一个带有额外链接的 div 容器。
猜你喜欢
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多