Rufen Sie die gleiche jQuery-Funktion sowohl auf Last und klicken Sie auf
In meinem "update" - Seiten habe ich oft die Notwendigkeit, rufen Sie die gleiche jQuery-Funktion sowohl beim laden der Seite " und klicken Sie einige Kontrollkästchen, die meist wie diese:
function foo(){
if ($('#mycheckbox').is(':checked')){
$('.myclass').hide();
} else {
$('.myclass').show();
}
}
$(function() {
foo(); //this is launched on load
$('#mycheckbox').click(function(){
foo(); //this is launched on checkbox click
})
});
Beim laden der Seite die checkbox könnte geprüft werden oder nicht, je nach Datenbank-Werte: das ist der Grund, warum ich das Bedürfnis haben, starten Sie die foo(); load
Gut, dies funktioniert sehr gut, aber ich habe mich immer gefragt, wenn... gibt es eine bessere oder elegantere Lösung?
Vielen Dank im Voraus
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Weg, es zu tun (unter der Annahme, dass Ihre Website enthält eine server-side-code-Komponente) wäre das anzeigen/verstecken der Eintrag in der server-Seite Rendern, als angemessen. Dies bedeutet, dass es keine screen 'flicker' (wie gering es ist) beim laden der Seite.
Die besten, die Sie tun können ist dieses:
->
Könnten Sie die
trigger()
- Funktion, um das Ereignis auszulösen sofort;Allerdings zu beachten, dass dies auch auslösen, die anderen Klick-Handler, die Sie definiert haben, auf das element.
Alternativ könnten Sie schreiben, eine kleine jQuery-plugin, um es für Sie tun;
Und Sie würde es nutzen wie;
Jedoch, das problem mit diesem ist, dass im inneren der click-handler,
this
ist normalerweise das aktuelle element; in der Erwägung, dass durch den Aufrufhandler();
wie wir hier tun -this
würde, zeigen Sie aufwindow
statt (dies ist nicht relevant für die genaue snippet, das Sie geschrieben, als Sie nichtthis
).Fix
this
, könnten wir hinzufügen einiger Komplexität und die Nutzung derFunktion.rufen Sie
Methode, um den Wertthis
;Allerdings werden Sie trotzdem ein problem haben, wenn du dich auf ein Event-Objekt übergeben wird...
könnte man vermeiden, die zweite Funktion aufrufen und binden Sie die Funktion " foo " direkt zu den click-handler:
Ich weiß, diese Frage wurde beantwortet vor, aber das ist eine andere nette Art und Weise zu vollbringen OP ' s problem, vor allem mit den Checkboxen im Sinn, als Auslösung ein click-Ereignis auf ein element bewirkt, dass die Kontrollkästchen, um versehentlich aktiviert/deaktiviert:
Diese Methode vermeidet auch die click-events propagieren.
Das einzige, was Sie tun könnten, wäre, Aufruf von foo() wie folgt:
Versuchen, diese