2010-10-14 9 views
8

Pytanie jquery.przypisywanie zdarzenia kliknięcia do elementu div, ale nie do niego zakotwiczenia

Mam element div zawierający tekst i znacznik zakotwiczenia.

Chcę przypisać zdarzenie click do znacznika div i jego zawartości, Z WYŁĄCZENIEM znacznika zakotwiczenia.

Po kliknięciu przycisku div zostanie wyświetlone okno alertu. Ale jeśli kliknę zakotwiczenie (to w div), alert nie powinien wystąpić.

Div byłoby coś takiego:

<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> 

Jakieś pomysły? Używam jquery, aby przypisać zdarzenie click do div.

Odpowiedz

13

Można sprawdzić cel kliknięcia ponieważ <a> nie ma dzieci, na przykład:

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

myślałem o napisaniu tego samego kodu, ale co jeśli chce, aby przejść do innej strony przy użyciu tagu kotwicy –

+1

@Avinash - To nie będzie kolidować z tym –

+0

Dzięki jeszcze raz. – Amra

0

Rozwijając na odpowiedź Nicka, po to, co skończyło się używając ponieważ odpowiada on za zagnieżdżonych tagów.

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

Powiązane problemy