繁体   English   中英

jQuery event.preventDefault()不起作用

[英]Jquery event.preventDefault() not working

我希望菜单显示和隐藏默认情况下单击的列表项是隐藏的。 问题是我的菜单是在管理部分生成的,因此如果我在菜单选项中将特定链接的URL字段设置为null,它将自动为它分配网站的url。 所以当我单击它会重新加载主页。

我想要的是,当我单击任何父项li时,它应该停止生成默认事件,因此可以使用它来防止默认事件。 但就我而言,它不起作用,并且在显示该父项的列表项后重新加载页面。

这是一个小提琴

HTML

<div class="mega-col col-xs-12 col-sm-12 col-md-4" data-type="menu">
    <div class="mega-col-inner">
        <ul>
            <li class="parent dropdown-submenu mega-group"><a class="dropdown-toggle" data-toggle="dropdown" href=""><span class="menu-title">Massachusetts Stores</span><b class="caret"></b></a>
                <div class="dropdown-mega level2">
                    <div class="dropdown-menu-inner">
                        <div class="row">
                            <div class="col-sm-12 mega-col" data-colwidth="12" data-type="menu">
                                <div class="mega-col-inner">
                                    <ul>
                                        <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=24"><span class="menu-title">Burlington Mall, MA</span></a>
                                        </li>
                                        <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=25"><span class="menu-title">Burlington Mall, MA - Cart</span></a>
                                        </li>
                                    </ul>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </li>
            <li class="parent dropdown-submenu mega-group"><a class="dropdown-toggle" data-toggle="dropdown" href=""><span class="menu-title">New Jersey Stores</span><b class="caret"></b></a>
                <div class="dropdown-mega level2">
                    <div class="dropdown-menu-inner">
                        <div class="row">
                            <div class="col-sm-12 mega-col" data-colwidth="12" data-type="menu">
                                <div class="mega-col-inner">
                                    <ul>
                                        <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=26"><span class="menu-title">Brunswick Square Mall, NJ</span></a>
                                        </li>
                                        <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=30"><span class="menu-title">Garden State Plaza, NJ</span></a>
                                        </li>
                                        <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=27"><span class="menu-title">Menlo Park Mall, NJ</span></a>
                                        </li>
                                        <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=29"><span class="menu-title">Ocean County Mall, NJ</span></a>
                                        </li>
                                        <li class=" "><a href=""><span class="menu-title">Rockaway Townsquare, NJ</span></a>
                                        </li>
                                    </ul>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </li>
            <li class="parent dropdown-submenu mega-group"><a class="dropdown-toggle" data-toggle="dropdown" href=""><span class="menu-title">New York Stores</span><b class="caret"></b></a>
                <div class="dropdown-mega level2">
                    <div class="dropdown-menu-inner">
                        <div class="row">
                            <div class="col-sm-12 mega-col" data-colwidth="12" data-type="menu">
                                <div class="mega-col-inner">
                                    <ul>
                                        <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=31"><span class="menu-title">Galleria at White Plains, NY</span></a>
                                        </li>
                                        <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=42"><span class="menu-title">Manhattan, NY-Toys 'R' Us </span></a>
                                        </li>
                                    </ul>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </li>
            <li class="parent dropdown-submenu mega-group"><a class="dropdown-toggle" data-toggle="dropdown" href=""><span class="menu-title">North Carolina Stores</span><b class="caret"></b></a>
                <div class="dropdown-mega level2">
                    <div class="dropdown-menu-inner">
                        <div class="row">
                            <div class="col-sm-12 mega-col" data-colwidth="12" data-type="menu">
                                <div class="mega-col-inner">
                                    <ul>
                                        <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=32"><span class="menu-title">CrabTree Valley, NC</span></a>
                                        </li>
                                        <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=2"><span class="menu-title">Fayetteville, NC</span></a>
                                        </li>
                                    </ul>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </li>
        </ul>
    </div>
</div>

JS:

  $("#li_menu169 li.parent.dropdown-submenu.mega-group").click(function(event) {
    var id = $(this).prop('id');
    if (id == 'yes') {

        //i want to prevent
    } else {
        event.preventDefault();
        $(this).children('.dropdown-mega.level2').show();
        $(this).children('.dropdown-mega.level2').hide();
        //redirect
    }
});

Css

li.parent.dropdown-submenu.mega-group .dropdown-mega.level2 {
display: none;
}
li
 {
padding:10px;
position: relative;
margin:auto;
}

这是一个工作示例: http : //jsfiddle.net/hk1w89zw/

不确定您要使用id prop属性实现什么。 通常,最好在链接( <a> -tag)而不是li上设置onClick事件。 并使用以下jQuery代码:

$("li.parent.dropdown-submenu.mega-group > a").on('click', function(event) {
    event.preventDefault();
    $('.dropdown-mega.level2').hide();
    $(this).closest('.parent').find('.dropdown-mega.level2').show();
});

也许你想要这样的东西

$("#li_menu169 li.parent.dropdown-submenu.mega-group").click(function(event) {
    var id = $(this).prop('id');
    if (id == 'yes') {

        //i want to prevent
    } else {

        $(this).children('.dropdown-mega.level2').show();
        $(this).children('.dropdown-mega.level2').hide();
        //redirect
        window.location.href="location_of_the_filehere";
    }
    event.preventDefault();

});

我必须承认我弄错了您的代码。

这是一个https://jsbin.com/gigowopijo/3/edit?html、js ,控制台,输出(JSBin)。

首先,您没有ID为“#li_menu169”的列表。 将其添加到ul元素

<div class="mega-col col-xs-12 col-sm-12 col-md-4" data-type="menu"><div class="mega-col-inner">
    <ul id="li_menu169">

稍后,您将显示和隐藏相同的元素,这有点令人困惑。 因此,我建议先隐藏所有内部元素,而不要显示“此”内容的内部元素。

 $("#li_menu169 li.parent.dropdown-submenu.mega-group").click(function(event) {
    var id = $(this).attr('id');

    if (id === 'yes' && typeof id !== undefined) {
        console.log("I'm there");
        //i want to prevent
    } else {
        console.log("i'm here");
        event.preventDefault();
        $('.dropdown-mega.level2').hide();
        $(this).find('.dropdown-mega.level2').show();
        //redirect
    }
});

在JSbin中,它按预期运行。

触发event时捕获event

$("#li_menu169 li.parent.dropdown-submenu.mega-group").click(function(event) {

    event.preventDefault();

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM