2010-05-11 41 views
0

我想在文檔級別與如何找到一個錨標籤上點擊當前文檔中的jQuery

$(document).click(); 

而上單擊元素我想看看它是否是一個附加click事件錨標籤。如果它是一個錨標籤,那麼我會調用一個方法來做一些事情。如何做到這一點?任何想法?

+0

爲什麼你想這樣做,而不是'$(「a」)。click(function(){...});'? – 2010-09-14 19:27:07

+0

@Peter:嘿好像在你的網頁末尾查看我的評論......問題是網頁上有100多個鏈接,用戶只能點擊一個鏈接。因此附加所有錨的點擊事件似乎有點沉重..! – Amit 2010-09-15 06:39:53

+0

謝謝。你能觀察到兩種方法在性能上的差異嗎? – 2010-09-15 11:42:17

回答

0

你只需要檢查事件對象的目標。

$(document).click(function(e) { 
    var targ; 
    if (!e) var e = window.event; 
    if (e.target) targ = e.target; 
    else if (e.srcElement) targ = e.srcElement; 

    if ($(targ).is('a')) { 
    // do your stuff 
    } 
}); 

而且(用於獲取來自quirksmode活動對象跨瀏覽器的代碼),如果你要還有其他的事件處理程序附加到鏈接,請確保您使用event.preventDefault而不是僅僅返回false如果您想取消鏈接的默認操作(請參閱this question)。

+0

工作正常...!謝謝.. :) – Amit 2010-05-11 05:22:06

0

如何直接附加這個函數直接調用所有錨點標記?

$("a").click(function(){ alert("a link!") })

+0

我相信這會在文檔中的所有錨標籤上添加一個單擊事件,我的用戶點擊任何一個鏈接並附加所有錨的點擊事件,聽起來有點沉重 – Amit 2010-05-11 05:11:29

+0

@Amit你是對的;只是認爲它比過濾文檔範圍內的點擊更有意義。看起來像其他人知道比我更多:) – goggin13 2010-05-11 05:36:02

0
<a href="#anchor">Anchor</a> 
<a href="link">Anchor</a> 

<script type="text/javascript"> 
    $(document).click(function(event){ 
     if(event.target.nodeName === 'A'){ 
      alert('Anchor'); 
     } else{ 
      alert('Not an anchor'); 
     } 
    }); 
</script> 
+0

不客氣。 – Ben 2010-05-11 05:25:41

0

@kkyy:什麼都不行,就是如果你正試圖使在該錨的是點擊事件的請求,在Safari(所有,窗戶,iPhone等),例如在您的代碼中:

if ($(targ).is('a')) { 
    var img = new Image(1,1); 
    img.onload = function(){}; 
    img.src = "http://www.google.com/images/logos/somelogo.png?" + new Date().getTime(); 
    } 

如果您通過任何嗅探器觀看流量,您將無法在Safari中看到上述請求。是的,非常跛腳!

+0

請縮進代碼4空格來格式化。 – 2010-09-14 19:25:15

相關問題