2013-05-13 119 views
2

我在slideDown菜单中的链接有问题。为什么子链接不起作用?

链接的不可点击为什么?

你可以在这里看到:JSFiddle

我jQuery代码是:

$('.links').hide(); 
$('.header a').click(function(e) { 
    $(this).next('.links').slideToggle('normal'); 
    e.preventDefault(); 
}); 
+5

您正在使用'preventDefault()',它可以防止默认操作。如果你只是想影响的顶级锚,你的选择更改为'$(“头> A”)' – billyonecan 2013-05-13 08:51:15

+0

我用FF 20.0.1 – Evolutio 2013-05-13 08:51:27

+3

删除'e.preventDefault()'如果你想点击链接 – diEcho 2013-05-13 08:52:03

回答

1

您的选择器.header a将影响您不想要的.header中包含的所有锚点。您只需要toggle(),当单击一个锚点时,它是.header的直接子项。

$('.header > a').click(function(e) { 
    e.preventDefault(); 
    $(this).next('.links').slideToggle('normal'); 
}); 
1

删除e.preventDefault()它会阻止默认动作是click()

$('.header a').click(function(e) { 
      $(this).next('.links').slideToggle('normal'); 
      //e.preventDefault(); 
     }); 

Demo Here

0

您使用的e.preventDefault();会停止即将发生的默认操作,即HREF将页面移动到新位置。如果您删除e.preventDefault(),您的链接将再次变为“活动”。

更新的代码

$('.header a').click(function(e) { 
    $(this).next('.links').slideToggle('normal'); 
}); 

从jQuery的文档:http://api.jquery.com/event.preventDefault/

e.preventDefault() - 如果此方法被调用时,事件的默认动作不会被触发。例如,点击的锚点不会将浏览器带到新的URL。

+0

有人可以解释投票吗? – ajtrichards 2013-05-13 16:01:18

相关问题