Ich versuche, Bedingungen für ein jQuery-Ereignis festzulegen. Ich habe ein Eingabeelement und ein div. Ich möchte einen Klick irgendwo auf der Seite erkennen und diese Methode ausführen, aber nur wenn der Klick nicht auf der Eingabe oder div ist.Click-Ereignis basierend auf Bedingung ausschließen?
Antwort
Verwenden Sie die jQuery click() oder leben() Funktionen und überprüfen dann das Ziel des Click-Ereignis mit der jQuery ist() Funktion.
- binden Click-Ereignis auf dem Dokument
- , wenn das Ziel nicht eingegeben wird oder div weiter
.
$(document.body).click(function(e) {
if(!$(e.target).is("input, div")) {
console.log("Run function because image or div were not clicked!");
}
});
Beispiel die Homepage =>http://mikegrace.s3.amazonaws.com/forums/stack-overflow/example-document-click-exclusion.html
Beispiel firebug Ausgang nach dem Einschalten Beispiel Seite klicken um
@Mike Keine Notwendigkeit, es auf den Dokument-Knoten zu sprudeln. Das BODY-Element ist genug. –
Danke Mike, dein Beispiel hat super funktioniert :-) – tmutton
@ Šime, richtig. Vielen Dank. –
Weisen Sie dem Body der Seite grundsätzlich einen Click-Handler zu und testen Sie dann das Zielelement des Events, um zu sehen, ob die ID dieses Zielelements mit Ihrem div oder Ihrer Eingabe übereinstimmt.
$("body").click(function(evt) {
var targetElementId = evt.target.id;
if (!(targetElementId == "yourDivID" || targetElementId == "yourinputId"))
{
// your event code here.
}
});
Verwenden Sie $ (event.target), da es durch das jquery-Ereignisobjekt normalisiert wird. http://api.jquery.com/event.target/ –
Sie müssen das Ereignisobjekt nicht normalisieren. jQuery macht das für dich. –
@Sime Vidas ... ja, es ist nur habbit .. –
So etwas sollte funktionieren.
$('body').click(function(event){ // body click
var $target = $(event.target); // click target
if($target.is('#mydiv, #myinput')) { // click target is div or input
$target.click(); // click div or input
}
});
var input = $("#yourInput")[0];
var div = $("#yourDiv")[0];
$(document.body).click(function(e) {
switch (e.target) {
case input: case div: return;
}
yourMethod();
});
Beispiel ausschließen bestimmte Elemente einen Platzhalter verwenden:
$("#mydiv li").click(function(e){
var Target = new String(e.target.id);
// prevent action when a element with id containing 'img_' is clicked
if(!Target.match(/img_/)) {
// do something
}
});
- 1. Reihe ausschließen basierend auf Bedingung
- 2. Werte basierend auf Bedingung
- 3. `map` basierend auf Bedingung
- 4. SQL Server wählen basierend auf bestimmten Bedingung
- 5. Ausschließen eines Elements basierend auf previousElementSibling
- 6. Delegiertensortierung basierend auf einer Bedingung
- 7. antcall basierend auf einer Bedingung
- 8. C# Zugriffsmethoden basierend auf Bedingung
- 9. Wo Bedingung basierend auf Timestamp
- 10. Dateien Einschließen/Ausschließen basierend auf Unterordner Namen
- 11. Ignore Test oder TestFixture basierend auf Bedingung
- 12. Regulärer Ausdruck Basierend auf Bedingung in Java
- 13. Autohände Zeilen in Excel basierend auf Bedingung
- 14. Vergleichen zweier Datenrahmen basierend auf einer Bedingung
- 15. Formatieren von Felddatenfarbe basierend auf Bedingung
- 16. jQuery ziehbare Rückstellung basierend auf Bedingung
- 17. Xquery Gruppierung Ergebnisse basierend auf Bedingung
- 18. Hinzufügen/Überspringen WHERE KLAUSEL basierend auf Bedingung
- 19. Anzeige Menüelemente als Spalte basierend auf Bedingung
- 20. Abhängigkeiten basierend auf der Bedingung installieren
- 21. wie Angualr.js Controller basierend auf Bedingung
- 22. wie Zeilen auszuwählen, basierend auf Bedingung sql
- 23. Anzahl basierend auf Bedingung in SQL Server
- 24. Wie Bedingung hinzufügen basierend auf If-Anweisung
- 25. Ändern Farbe render basierend auf einer Bedingung
- 26. lesen Datentabelle Spalte basierend auf Bedingung C#
- 27. Zellen in Spalte basierend auf Bedingung verschmelzen
- 28. beseitigen letzte 2 Zeichen basierend auf Bedingung
- 29. Holen Sie MantytoOne basierend auf bestimmten Bedingung
- 30. Abbrechen Join-Bedingung basierend auf Spalte Wert
So Sagst du, du willst es können? um eine Funktion immer dann aufzurufen, wenn ein Benutzer auf die Seite klickt und sie nicht auf der Eingabe oder div steht? –