Wenn eine Person zu meiner Seite gegangen ist, möchte ich, dass jQuery ausgeführt wird. Wenn sie auf eine Schaltfläche auf der Seite klicken, wird der gleiche jQuery-Code ausgeführt. Muss ich dafür separate Funktionen erstellen? Eine, die lädt, wenn die Person auf die Seite kommt und dann die Klick-Funktion, wenn jemand auf die Schaltfläche klickt? Oder um Code nicht duplizieren zu müssen, kann alles in einer Funktion sein?Jquery wird ausgeführt, wenn die Seite geladen wird und wenn die Schaltfläche geklickt wird
Antwort
Sie können die Funktion für beide wiederverwenden:
$(function() {
// declare the function
function myReusableFunction() {
// do something extraordinary
}
// call it on page load
myReusableFunction();
// assign to handler
$('button').click(myReusableFunction);
});
Beachten Sie, dass der Wert von this
und der Parameter (falls vorhanden) wird anders sein.
Wenn das ein Problem ist, können Sie es direkt aufrufen, indem Sie einen click
-Trigger verketten.
$(function() {
// assign to handler AND call it
$('button').click(function() {
// do something extraordinary
}).click();
});
EDIT: Wenn es mehr als einen button
ist, dass es zugeordnet ist, löst der .click()
für alle von ihnen.
Wenn dies nicht das, was gewünscht ist, können Sie es ändern:
$(function() {
// assign to handler AND call it
$('button').click(function() {
// do something extraordinary
}).eq(0).click();
});
... es auf dem ersten nur auszulösen.
Oder diese:
$(function() {
// assign to handler AND call it
$('button').click(function() {
// do something extraordinary
}).triggerHandler('click');
});
... die nur Feuer auf das erste Element, sondern auch ein paar andere Unterschiede hat. Weitere Informationen finden Sie in der Dokumentation für triggerHandler.
Hier ist ein Beispiel, das ein Ereignis bindet und es zusätzlich auslöst.
$(function() {
$('#yourButton').click(function(){
alert('Yay');
}).click();
});
Edit: aufgeräumt meine Erklärung und schreckliche Grammatik ...
$(function() {
$("#myButton").click(function() {
//your code
alert("exeuted"); //on click button alerts
}).click(); //simulate click to execute onload
});
Online-Demo hier: http://jsfiddle.net/nMPMt/
, warum die erste $? –
@Simon: Dies ist eine Abkürzung für die '.ready()' Methode von jQuery. Stellt sicher, dass das DOM geladen wird, bevor der Code ausgeführt wird, indem der Code in den Handler gestellt wird, der an '.ready()' gesendet wird. – user113716
Was für eine großartige Antwort: D +1 –