簡體   English   中英

下拉菜單的jQuery切換功能遇到問題

[英]Having trouble with jQuery toggle function for dropdown menu

我有一個下拉菜單,當切換以顯示其菜單項時,它會上下滑動。 問題是,當我在菜單向下滑動后單擊某個菜單項時,它會被識別為切換按鈕,並且菜單向上滑動而不打開菜單項的鏈接。

的HTML

<li class="dropdown">
            <a href="#">Carbohydrates, proteins &amp; fats</a>
            <ul>
                <li><a href="carbohydrates.php">Carbohydrates</a></li>
                <li><a href="proteins.php">Proteins</a></li>
                <li><a href="fats.php">Fats</a></li>
            </ul>
        </li>

下拉腳本:

$(document).ready(function () {
    $('.dropdown').toggle(
        function () {
            //show its submenu
            $('ul', this).slideDown(300);
        },
        function () {
            //hide its submenu
            $('ul', this).slideUp(300);        
        }
    );

});

我將不勝感激。

為什么要分別關閉/打開菜單項? <li>元素被隱藏后,所有內容都會被隱藏起來-為什么之后還要做什么?

我想你想禁用事件冒泡


編輯1:您太復雜了。 嘗試這個:

$(document).ready(function () {
    $('.dropdown').toggle();
});

編輯2:您可以更具體地想要什么嗎? 如果要單擊某個特定元素來控制特定列表的運動,請嘗試以下操作:

$(document).ready(function () {
    $('a.someLink').click(function() {
       $('.dropdown').toggle();
    });
});

嘗試將觸發鏈接移至下拉項之外

<a href="#" class="dropdown">Carbohydrates, proteins &amp; fats</a>
<div class="divdropdown">
   <ul>
       <li><a href="carbohydrates.php">Carbohydrates</a></li>
       <li><a href="proteins.php">Proteins</a></li>
       <li><a href="fats.php">Fats</a></li>
   </ul>
</div>​

然后稍微修改你的jQuery

$(document).ready(function () {
    $('.dropdown').toggle(
        function () {
            //show its submenu
            $('ul', $(".divdropdown")).slideDown(300);
        },
        function () {
            //hide its submenu
            $('ul', $(".divdropdown")).slideUp(300);        
        }
    );
});​

不幸的是,以上答案都對我沒有幫助。 之后不久,我找到了解決方案。

的HTML

<li class="dropdown">
            <a class="disablelink" href="#">Carbohydrates, proteins &amp; fats</a>
            <ul class="sub_navigation">
                <li><a href="carbohydrates.php">Carbohydrates</a></li>
                <li><a href="proteins.php">Proteins</a></li>
                <li><a href="fats.php">Fats</a></li>
            </ul>
        </li>

jQuery腳本

$(document).ready(function() {
        $('.dropdown').click(function() {
                        // When the event is triggered, grab the current element 'this' and
                        // find it's children '.sub_navigation' and display/hide them
            $(this).find('.sub_navigation').slideToggle(); 
        });

        $(".disablelink").click(function(e) {
            e.preventDefault();
        });

    });

該解決方案非常適合我。 我添加了e.preventDefault(); 當我單擊鏈接時,停止頁面上下跳動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM