2009-08-13 10 views
9

Est-ce que je suis autorisé à utiliser JQuery dans une fonction onClick?Utilisation de JQuery dans onClick

Par exemple:

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

tel que, lorsque vous cliquez dessus, la balise d'ancrage exécute ceci:

my_save_function(foo);

Après quelques recherches, je ne pouvais pas trouver un sujet similaire. Merci pour toute aide.

+0

Merci beaucoup pour les réponses rapides. Je ne cesse jamais d'être étonné par la communauté de SO. –

Répondre

16

Bien sûr. jQuery n'existe pas dans un univers particulier; c'est juste une collection de fonctions JavaScript que vous pourriez trouver (extraordinairement) utile.

Cependant, si vous utilisez jQuery de toute façon, pourquoi ne pas attacher correctement l'événement onclick depuis jQuery? Vous auriez juste à faire:

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

Ce n'est pas toujours possible (ou pratique) si l'on utilise par exemple l'injection html. – Karlth

+0

Si vous injectez du nouveau HTML, vous pouvez toujours y attacher vos propres gestionnaires dès qu'ils font partie du DOM. La synchronisation (c'est-à-dire la séquence dans votre code) peut être un peu différente, mais les bases de l'attachement d'un gestionnaire d'événement ne sont pas différentes. – VoteyDisciple

+0

L'ajout de gestionnaires lors de la connexion au DOS n'est pas toujours possible. Cela dépend de la structure du projet, si par exemple vous ne contrôlez que la création du code HTML et non le code lors de l'injection. – Karlth

3

essayez ceci (vous aurez besoin d'une carte d'identité sur l'étiquette d'ancrage):

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

et dans votre javascript:

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

Honnêtement , vous avez déjà écrit le code et le balisage, ne pourriez-vous pas l'exécuter et voir si cela a fonctionné?

En réponse à votre question, oui, cela devrait fonctionner, mais regardez vos devis imbriqués. Il serait préférable de le lire et de le conserver si vous ajoutez un gestionnaire de clic à l'élément plutôt que d'incorporer le corps de la fonction dans la chaîne d'attributs.

+0

J'ai essayé. Cependant, j'obtiens une erreur de syntaxe dans FireBug comme ceci: erreur de syntaxe my_save_function ($ (Donc, je ne savais pas si JQuery est encore utilisable dans la fonction.C'est pourquoi j'ai demandé –

+0

Ouais je pense que les citations le faisaient .. Vous devez soit utiliser des guillemets simples sur l'ensemble interne, soit échapper les guillemets doubles supplémentaires – flatline

+0

Oui, cela s'est avéré être exactement le problème. –

Questions connexes