2009-08-13 12 views
9

Sono autorizzato a utilizzare JQuery in una funzione onClick?Utilizzo di JQuery in onClick

Ad esempio:

<a onclick="my_save_function($("#inputID").val())">
<input type=hidden id="inputID" value="foo">

Tale che, se cliccato, il tag anchor gestisce questo:

my_save_function(foo);

Dopo alcune ricerche, non riuscivo a trovare un argomento simile Grazie per tutto l'aiuto.

+0

Grazie mille per le risposte veloci. Non smetto mai di essere stupito dalla comunità di SO. –

risposta

16

Sicuro. jQuery non esiste in nessun universo speciale; è solo una raccolta di funzioni JavaScript che potresti trovare (straordinariamente) utili.

Tuttavia, se si utilizza comunque jQuery, perché non collegare correttamente l'evento onclick da jQuery? Faresti solo fare:

$(document).ready(function() { 
    $("#id-for-that-link").click(function() { 
     my_save_function($("#inputID").val()); 
    }); 
}); 
+0

Non è sempre possibile (o pratico) se uno, ad esempio, utilizza l'iniezione html. – Karlth

+0

Se si sta iniettando nuovo codice HTML, è comunque possibile associarvi i propri gestori non appena fa parte del DOM. I tempi (ad es. La sequenza nel codice) possono essere leggermente diversi, ma le basi per collegare un gestore di eventi non sono diversi. – VoteyDisciple

+0

Non è sempre possibile collegare i gestori durante il collegamento al DOS. Dipende dalla struttura del progetto, se per esempio si controlla solo la creazione dell'Html e non il codice quando viene iniettato. – Karlth

3

provare questo (è necessario un ID sul tag di ancoraggio):

<a onclick="my_save_function(this.id);"> 

e nel tuo javascript:

function my_save_function(elid){ 
    v = $("#"+elid).val(); 
    // do stuff with v 
} 
0

Onestamente , avevi già scritto il codice e il markup, non potresti semplicemente eseguirlo e vedere se ha funzionato?

In risposta alla tua domanda, sì, questo dovrebbe funzionare bene, ma guarda le quotazioni annidate. Sarebbe una forma migliore e più facile da leggere/mantenere se si aggiunge un gestore di clic all'elemento piuttosto che si incorpori il corpo della funzione nella stringa dell'attributo.

+0

L'ho provato. Comunque, sto ottenendo un errore di sintassi in FireBug come questo: Errore di sintassi my_save_function ($ (Quindi non ero sicuro che JQuery sia utilizzabile anche all'interno della funzione.Questo è il motivo per cui l'ho chiesto. –

+0

Sì, penso che le citazioni lo stessero facendo .. o avete bisogno di usare le virgolette singole sul set interno o sfuggire alle doppie virgolette supplementari: – flatline

+0

Sì, è stato proprio questo il problema. Grazie. :) –