2012-05-21 96 views
0

頂部我有下面的代碼這是應該當您單擊除了射擊和警告的鏈接,阻止發生任何事情。鏈接目的地被取消,但點擊鏈接會將您滾動到頁面頂部。我怎樣才能阻止這種行爲?由於的preventDefault仍然滾動到頁面

$('a#target').click(function(event){ 
    event.preventDefault(); 
    alert('End of demo'); 
}); 

更新我的鏈接如下所示:

<a href="#">Submit</a> 
+2

能否請您包括您與此使用HTML ...因爲它工作完全正常我(http://jsfiddle.net/GJnxT/)! – ManseUK

+1

它實際上[對我來說工作得很好嗎?](http://jsfiddle.net/GJnxT/1/) – adeneo

回答

1

不,的preventDefault不應該阻止任何東西,它應該做的正是它說 - 防止默認動作。即如果你點擊一個帶有href的鏈接,它將阻止瀏覽器訪問該鏈接的默認動作。

如果你想停止連接到該鏈接的所有其他事件,必須在事件處理程序的最後返回false,並確保該事件處理是任何其他之前執行。

UPDATE:

感謝張貼的鏈接和href值。我敢打賭,發生的事情是JavaScript在點擊處理程序被觸發之前遇到錯誤。正如對這個答案的第一條評論正確地表明 - preventDefault應該防止鏈接跳轉到頁面內的錨點。如果不是,做它的工作,那可能是因爲頁面上的其他地方存在JavaScript錯誤。

所有這一切是說,你確定你發佈了正確的HTML?

$('a#target').click(... 

附加一個單擊處理程序,看起來像這樣的鏈接:

<a href="#" id="target">Submit</a> 

而且最終的一個想法 - 如果定位元素只有通過JavaScript連接到它的動作(一個或多個),那麼爲什麼指定選項href屬性呢?

+1

在這種情況下,因爲它的目標是一個錨點,所以它應該停止的默認動作的一部分是正常的頁面跳轉。 – Sparky

+0

在最初的文章中,我們所知道的是它的目標是一個具有目標ID的錨 - 我們無法知道它是否具有href,或者它的href是指向頁面上的目標還是外部頁面。 – Adam

+0

據我所知,哈希將導致頁面跳轉到頂部,除非你停下來,阻止或預防。是的,我們需要查看更多代碼才能正確回答問題,所以我不確定您爲什麼回答該問題。 – Sparky

相關問題