我在slideDown菜单中的链接有问题。为什么子链接不起作用?
链接的不可点击为什么?
你可以在这里看到:JSFiddle
我jQuery代码是:
$('.links').hide();
$('.header a').click(function(e) {
$(this).next('.links').slideToggle('normal');
e.preventDefault();
});
我在slideDown菜单中的链接有问题。为什么子链接不起作用?
链接的不可点击为什么?
你可以在这里看到:JSFiddle
我jQuery代码是:
$('.links').hide();
$('.header a').click(function(e) {
$(this).next('.links').slideToggle('normal');
e.preventDefault();
});
您的选择器.header a
将影响您不想要的.header
中包含的所有锚点。您只需要toggle()
,当单击一个锚点时,它是.header
的直接子项。
$('.header > a').click(function(e) {
e.preventDefault();
$(this).next('.links').slideToggle('normal');
});
删除e.preventDefault()
它会阻止默认动作是click()
$('.header a').click(function(e) {
$(this).next('.links').slideToggle('normal');
//e.preventDefault();
});
您使用的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。
有人可以解释投票吗? – ajtrichards 2013-05-13 16:01:18
您正在使用'preventDefault()',它可以防止默认操作。如果你只是想影响的顶级锚,你的选择更改为'$(“头> A”)' – billyonecan 2013-05-13 08:51:15
我用FF 20.0.1 – Evolutio 2013-05-13 08:51:27
删除'e.preventDefault()'如果你想点击链接 – diEcho 2013-05-13 08:52:03