2013-05-13 224 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