2016-08-05 37 views
0

Ich habe mehrere Elemente auf einer Seite wie der untere Code.Wie binden Sie Click-Ereignis an Element hat nicht bestimmte unter Verwendung von jquery?

<div> 
    <a href="#" id="notme">click</a> 
    some content 
</div> 

Sie können geklickt werden und jQuery wählt diesen Klick aus. Jedoch hat eines der Elemente eine a Verknüpfung, die angeklickt wird, sollte nicht als ein Klick auf das übergeordnete Element ausgewählt werden.

$('div:not(#notme)').on('click', function(e) { 
    // do something 
}); 

Scheint nicht aus irgendeinem Grund zu arbeiten ...

+0

[Es Arbeit] (https://jsfiddle.net/5tppgpg4/). Sie müssen '$ ('div: not (#notme)')' in '$ ('a: not (#notme)')' 'ändern. – Mohammad

+0

Ich muss ein Ereignis registrieren, wenn div geklickt wird, aber nicht, wenn der Link in diesem div. Es ist möglich? – santa

Antwort

0

Verwenden :has Wähler auf die Auswahl div elementspezifische Kind hat. In :has verwenden Sie :not.

$("div:has(a:not(#notme))").on("click", function(e) { 
 
    console.log("clicked"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <a href="#" id="notme">click</a> 
 
    some content 
 
</div> 
 
<div> 
 
    <a href="#" >click2</a> 
 
    some content 2 
 
</div>

0

Sie können versuchen:

$('div').on('click', function(e) { 
    if($(e.target).attr("id") !== "notme") { 
    // do something 
    } 
}); 
0
$('#notme').on('click', function(e) { 
    e.stopPropagation(); 
}); 
+0

Bitte fügen Sie eine Erklärung hinzu, warum dieser Code dem OP hilft. Dies wird helfen, eine Antwort zu liefern, von der zukünftige Zuschauer lernen können. Weitere Informationen finden Sie unter [Antwort]. –

+0

@MikeMcCaughan Ich habe keine Ahnung, ob es ihm hilft oder nicht, da er die Antwort niemandes kommentiert hat. – j08691

+0

Ja, das ist ein in Dosen gearbeiteter Kommentar, den ich ansonsten anständige Antworten anbringe, wenn ich sie in der Warteschlange mit niedriger Qualität sehe. Es geht auch um mehr als nur dieses OP, oder? :) –