2013-03-09 17 views
17

Ich möchte eine Funktion auslösen, wenn die Seite geladen ist. There are many ways to do this. Wenn ich jedoch $('#button').click vor meiner Funktion hinzufüge, wird die getType Funktion nicht erkannt. Zum Beispiel:jQuery simulieren klicken

$('#button').click(function getType(id) { 
    //...some code 
}); 

error: getType is not defined

Was mache ich falsch?

Nur um zu klären, in diesem Fall kann ich keine anonyme Funktion verwenden. Auch ist es mir egal, ob ich oder $(window).bind("load", function() verwende, aber mit diesen bekomme ich immer noch den "getType ist nicht definiert" -Fehler.

+0

Ähnlich http://stackoverflow.com/questions/773639/how-can-i-simulate-an-anchor-click -VIA-jquery IMO die Antwort ist '$ (" # Beispiel ") [0] .click();' –

Antwort

26

entweder haben Sie machen Ihre Funktion anonymous:

$('#button').click(function() { 
    //...some code 
}); 

oder übergeben Sie die Funktion selbst:

function getType() { 
    //...some code 
} 

$('#button').click(getType); 

Wenn Sie nur einen Klick auslösen wollen, rufen Sie .click():

$('#button').click(); 

Auch Ihr id Parameter nicht das Element der sein id. Es wird das Klickereignisobjekt sein. Um das Element des bekommen id, können Sie auf das geklickt Element verweisen mit this:

$('#button').click(function() { 
    var id = this.id; 
}); 

Ich schlage vor, Sie lesen ein paar JavaScript und jQuery Tutorials (in dieser Reihenfolge).

$('#button').click(function() { 
    var id = this.id; 
    //...some code 
}); 
+0

Ich denke, der erste Parameter von 'click' ist eine Instanz von' eventObject'. Also wird ID immer die Instanz sein, nicht die ID. –

+0

@GabrielSantos: Ja, das habe ich am Ende meiner Antwort geschrieben. – Blender

+0

Es ist verwirrend erklären am Ende, wenn Sie ID von Anfang verwenden;) –

3
$('#button').click(function getType(id) { 
    //...some code 
}); 

Sollte sein:

$('#button').click(function() { 
     [...] code here 
    } 
); 

function() { } ist ein Rückruf mit welcher Code zu tun haben, wenn ich ein Element klicken.

Wenn Sie die getType Funktion haben, können Sie es als Rückruf übergeben:

$('#button').click(getType); 

Wenn Sie einen funcion auslösen soll, wenn Seite zu laden, können Sie dies tun:

$('#button').trigger('click'); 

oder

function getType() { 
    [...] code here 
} 

getType(); 
0

Versuchen Sie dies, kann die ID nicht so, wie Sie tun, übergeben werden sein sollte:

$('#button').click(function() { 
     // do your stuff here 
    } 
); 

Neben, dass, wie Die Titel sagt, Sie müssen ein click Event simulieren, oder?wenn ja besser Sie so etwas wie verwenden:

$('#button').on('click', function() { 
    alert($(this).text()); 
}); 
// somewhere when you want to simulate the click you call the trigger function 
$('#button').trigger('click'); 

siehe documentation here

5

Sie verwenden die Inline-Notation so ist, sollten Sie eine anonyme Funktion (kein Name-Funktion)

Code verwenden:

1

Die .click() Methode erfordert eine Callback-Funktion. So können Sie so etwas wie dies stattdessen tun:

//Define your function somewhere else 
function getType(id) { 
    //...some code 
} 

$('#button').click(function() { 
    getType($(this).attr('id')); //Execute it when its clicked. 
}); 
2

Verwenden .trigger(event [, extraParameters ]) auf dem Element.

extraParameters
Type: Array or PlainObject
Additional parameters to pass along to the event handler.

Der zusätzliche Vorteil ist, dass Sie Daten an den Ereignishandler übergeben kann, während, wenn Sie .click() verwenden, können Sie keine Daten an das Objekt zuordnen.

$("#target").trigger('click'); 

Wenn Sie suchen die extraParameters zu verwenden:

$("#foo").on("custom", function(event, param1, param2) { 
    alert(param1 + "\n" + param2); 
}); 
$("#foo").trigger("custom", [ "Custom", "Event" ]);