2013-03-09 11 views
17

Desidero attivare una funzione quando la pagina viene caricata. There are many ways to do this. Tuttavia, quando aggiungo $('#button').click davanti alla mia funzione, la funzione getType non viene riconosciuta. Per esempio:jQuery simula clic

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

error: getType is not defined

Che cosa sto facendo di sbagliato?

Giusto per chiarire, in questo caso non posso utilizzare una funzione anonima. Inoltre, non mi importa se io uso $(document).ready o $(window).bind("load", function(), ma usando questi ho ancora l'errore "getType non è definito".

+0

Simile a http://stackoverflow.com/questions/773639/how-can-i-simulate-an-anchor-click -via-jquery IMO la risposta è '$ (" # esempio ") [0] .click();' –

risposta

26

hai rendere la vostra funzione anonima:

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

O passare la funzione stessa:

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

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

Se si desidera solo per innescare un click, chiamare .click():

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

Inoltre, il parametro id non sarà l'elemento di id. Sarà l'oggetto evento click. Per ottenere l'elemento del id, è possibile fare riferimento all'elemento cliccato utilizzando this:

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

vi consiglio di leggere un qualche tutorial JavaScript e jQuery (in questo ordine).

+0

Penso che il primo parametro di 'clic' sia un'istanza di' eventObject'. Quindi, id sarà sempre l'istanza, non l'id. –

+0

@GabrielSantos: Sì, è quello che ho scritto alla fine della mia risposta. – Blender

+0

Alla fine, è confuso spiegare quando si usa id dall'inizio;) –

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

dovrebbe essere:

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

function() { } è un callback con quale codice hanno a che fare quando clicco qualche elemento.

Se avete la funzione getType, è possibile passare come un callback:

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

Se si desidera attivare un funcion, quando il carico pagina, è possibile fare questo:

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

o

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

getType(); 
0

Prova questo, l'ID non può essere passato il modo di fare:

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

Si utilizza la notazione in linea così, si dovrebbe utilizzare una funzione anonima (nessuna funzione nome)

il codice dovrebbe essere:

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

Accanto che, come i titoli dicono, è necessario simulare un evento click, giusto?in tal caso è meglio utilizzare qualcosa come:

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

vedere documentation here

1

Il metodo .click() richiede una funzione di callback. Così si può fare qualcosa di simile, invece:

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

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

Usa .trigger(event [, extraParameters ]) sull'elemento.

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

Il vantaggio è che si può passare i dati al gestore di eventi, mentre se si utilizza .click(), non è possibile assegnare i dati all'oggetto.

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

Se stai cercando di utilizzare il extraParameters:

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