2009-10-08 8 views
10

Actuellement, je suis en utilisant quelque chose comme:Comment envoyer plusieurs arguments à la fonction jQuery click?

$('.myclass').click(function(){ 
    var msg = $(this).attr('id'); 
    alert(msg) 
}); 

Et HTML:

< a href="#" class="myclass" id="101">Link</a> 

Si j'ai besoin des paramètres supplémentaires comment pourrais-je lire? Est-ce que la façon actuelle d'utiliser la bonne façon est aussi la bonne? À l'origine, j'utilisais des champs d'entrée cachés, donc c'était déjà un pas en avant. : P

+0

Il est considéré comme une mauvaise convention de commencer un ID avec un numéro, mais si vous ne l'utilisez pas comme ID, alors c'est probablement OK. La dernière fois que j'ai vérifié, Firefox ne reconnaîtra pas un ID commençant par un nombre. – Mottie

+0

oui, c'est correct fudgey ... ne commencez pas vos ID avec un numéro, mais l'idée dans ma réponse est toujours la même. – Jason

Répondre

1

vous pouvez utiliser bind() et envoyer des données supplémentaires au gestionnaire d'événements comme event.data

18

jQuery Events

jQuery .click()

$('.myclass').bind("click", { Param1: "", Param2: 2 }, function(event){ 
    alert(event.data.Param2); 
}); 
+3

Cela voudrait-il dire que je devrais inclure cette fonction sur la même page? Actuellement, tous mes trucs js sont dans un fichier séparé. – Roger

+0

Donc, dans les données de l'événement, il est possible de passer un objet JSON entier, n'est-ce pas? Belle fonctionnalité. –

+0

@Roger vous pouvez aussi avoir la fonction dehors, assurez-vous juste d'analyser les arguments dans votre fonction externe en utilisant la méthode event.data.ParamX comme le montre la réponse. Cela fonctionne parfaitement. – andreszs

1

ce ne peut pas être la meilleure méthode, mais quelque chose je l'ai fait est à délimiter l'attribut id avec d'autres paramètres, comme id="101-red-420582" qui tous les trois signifient des choses différentes et peuvent être facilement décomposés à l'aide de la fonction. pas le meilleur en soi, mais je l'ai fait et ça marche.

+2

Par hasard je suis venu avec cette idée exacte et cela fonctionnait bien, mais comme vous l'avez dit pas trop sûr si c'est la bonne façon et parfois la chaîne pourrait devenir assez grande (pas sûr s'il y a une limite de l'ID). – Roger

+0

J'utilise toujours une méthode similaire, mais à la place de 'id' j'utilise l'attribut 'rel'. Je crois que l'un ou l'autre contiendra autant d'informations que nécessaire, y compris le HTML. – Mottie

0

Solution rapide

<p class="msg_head" id="837" rel="a" **till_limit="9"**>Header-1 </p>

et vous pouvez vous référer comme

$(this).attr('till_limit'); 

Cette solution similaire est comme définir votre propre ID et renvoyer l'élément selon vos besoins.

+1

Veuillez ne pas utiliser de signatures ou de slogans (http://stackoverflow.com/faq#signatures) dans vos publications. – meagar

Questions connexes