jquery end阻止菜单上最后一个链接的default()

Dan*_*Dan 1 jquery if-statement

我有一个似乎工作正常的幻灯片菜单,问题是如果你选择一个它应该做的链接,如果你选择一个有孩子的链接,那么preventdefault()就会启动并滚动到它孩子,我很高兴到目前为止,但是一旦你到了链接的末尾,因为没有更多的孩子,链接应该正常工作,但事实并非如此.

这是jquery

$(".menu li").click(function(e) {
    if($(this).children('.sub-menu').length > 0) {
        e.preventDefault();
        $(this).children('.sub-menu').addClass('open');
    }
    else  {
        $(".menu li").ready(function(){
            return true;
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

我还附上了一个工作的小提琴.

http://jsfiddle.net/R6wHG/16/

Ant*_*ist 5

问题在于您将事件处理程序绑定到<li>元素,并且单击<a>元素会在DOM 上向上传播.当你点击链接,从该链接到气泡<li>(不包含一个子菜单),然后最终到另一个<li>其中确实包含一个子菜单,在这一点上是点击的默认行为事件(链接后)被禁止.将事件处理程序绑定到<a>元素本身,并检查下一个元素是否为.sub-menu1:

$(".menu a").click(function (e) {
    if ($(this).next('.sub-menu').length > 0) {
        e.preventDefault();
        $(this).next('.sub-menu').addClass('open');
    }
});
Run Code Online (Sandbox Code Playgroud)

更新了jsFiddle