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)
我还附上了一个工作的小提琴.
问题在于您将事件处理程序绑定到<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)