2011-01-13 18 views
1

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

4

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.

+0

, warum die erste $? –

+0

@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

+0

Was für eine großartige Antwort: D +1 –

0

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

1
$(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/

Verwandte Themen