2010-08-18 48 views
-1

我有一個<a>標籤,其中包含一個跨度。跨度有JavaScript附加,它做了一些事情。因此,點擊範圍時,JavaScript會運行,但<a href>會被忽略,並且不會導航到該範圍。'OnClick'中斷我的超鏈接

有沒有辦法讓它繼續正常導航?

<a href='http://www.google.com'><span>some text</span></a> 

點擊事件實際上被註冊的其他方式比onclick,我的問題標題有點誤導。

將鼠標懸停在鏈接上,將URL置於狀態欄中,就像您所期望的那樣,只需單擊它就不會執行任何操作。

這個javascript很簡單return true;此刻我試圖弄明白。

我懷疑javascript是在span而不是a,它一旦完成javascript就會傳播給href。

恐怕我不知道它是如何綁定的,因爲它是一些奇怪的第三方組件。

+3

請向我們展示你的JS。 – 2010-08-18 15:52:59

+0

請發佈跨度點擊處理程序的代碼及其綁定方式 – 2010-08-18 15:54:11

+1

這裏沒有足夠的信息來找出導致問題的原因。我寫了一個''的快速測試(http://jsfiddle.net/3Hk4m/),在''內有一個onclick處理程序,但是這樣做很好(事件觸發,然後頁面重定向)。 – 2010-08-18 15:59:29

回答

1

我懷疑是因爲JavaScript是在跨度,而不是它一旦javascript完成後如何傳播回href混淆。

是。如果您的onClick處理程序位於跨度上,則瀏覽器無法讀取超鏈接的href屬性。如果鏈接有一個ID,你可以這樣做:

function onclick() 
{ 
    //Do your things... 

    var link = document.getElementbyId('your_link_id').href; 
    window.location.href = link; 
    return true; 
} 
+0

關於正確的聲音,現在要弄清楚當我不知道ID時該怎麼做......我可以使用'this'關鍵字並獲取parent.href('a'標記)? – NibblyPig 2010-08-18 16:01:10

+0

我不相信這是真的。除非span上的事件處理程序以某種方式阻止點擊事件冒泡,否則的默認onclick應該仍然會觸發。看一個簡單的例子http://jsfiddle.net/3Hk4m/。 – 2010-08-18 16:01:46

0

您的JavaScript可能返回的值是非真(值爲布爾值false)。簡單的解決方案是在單擊鏈接時運行的函數/代碼的末尾添加return true語句。

+0

試過這個,但沒有運氣 – NibblyPig 2010-08-18 15:51:59

+0

你能發佈鏈接HTML以及運行的JavaScript(以及代碼附加到鏈接)? – tj111 2010-08-18 15:55:40

+0

不幸的是,我不知道它是如何運行JavaScript的,當我點擊它時,它是厄運的一個可怕的共享點頁面,它必須以某種方式註冊它。 – NibblyPig 2010-08-18 15:57:07

-2

如果您使用的是jQuery,請確保您在事件處理程序中不返回false。這將覆蓋默認值。

如果不能,你可能需要明確的代碼,你想你的鏈接到您的JS後做什麼:

<a href="www.example.com" onclick="javascript:someFunction(); window.location = \"www.example.com\"">click here</a> 

這將執行一個功能,則窗口重定向到正確的位置。

+0

很遺憾,我無法編輯跨度的onclick事件,使用CMS拉動內容並自動生成內容。 – NibblyPig 2010-08-18 15:56:08

+0

哎呦downvotes ...有什麼不對?是否使用onclick屬性而不是將它移動到單獨的JS文件?是我用javascript:僞原型? – Tim 2010-08-18 16:00:14

+0

如果您無法編輯跨度的單擊事件,則可能處於受傷的世界。您可能需要通過引用獲取函數,清除其單擊事件的範圍,並添加一個調用舊引用的新事件,然後返回true。 – sworoc 2010-08-18 16:00:29