2010-10-14 38 views
8

jQuery的問題。將點擊事件分配給div但不在其中錨定

我有一個包含文本和錨標記的div。

我想爲div標籤及其內容分配一個點擊事件EXCLUDING錨標籤。

所以當我點擊div時,彈出一個警告窗口。但是,如果我點擊錨點(即在div內),則不應該發生警報。

的股利將是這樣的:

<div id="myDiv"> 
    This is the content of the div. 
    <img src="blah.jpg" /> 
    <a href="somewhere.html">Click here</a>. 
    Some more content. 
</div> 

任何想法?我正在使用jquery將click事件分配給div。

回答

13

您可以查看點擊的目標,因爲<a>一直沒有孩子,例如:

$("#myDiv").click(function(e) { 
    if(e.target.nodeName == 'A') return; 
    //click handler code 
}); 
+0

我想編寫相同的代碼,但如果他想轉到使用錨標記 – 2010-10-14 12:30:52

+1

@Avinash另一頁是什麼的 - 這不會與 – 2010-10-14 12:31:30

+0

再次感謝干擾。 – Amra 2010-11-23 12:25:55

0

擴展在尼克的回答,下面是我最終使用,因爲它佔了嵌套的標籤。

function handleClick(e) { 
    var $current = $(e.target); 

    // return if we don't want to override another click event 
    // check current tag 
    var tags = ['A', 'BUTTON', 'INPUT']; 
    if (tags.indexOf(e.target.tagName) >= 0) 
     return; 
    // check parent tags 
    var ignoreClick = false; 
    $.each(tags, function(i, tag) { 
     console.log('checking tag', tag); 
     if ($current.parents(tag).length) { 
     ignoreClick = true; 
     return; 
     } 
    }); 
    if (ignoreClick) 
     return; 

    // do your normal click stuff here 
} 

JsFiddle

相關問題