Passage de paramètres multiples et dynamiques (onclick)
Bonjour,
quelle est la méthode préconisée pour faire ce qui suit en JQuery ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
HTML :
<a href="#" id="1" value="5" onclick="maFction(3,'ABC',11)">lien 1</a><br/>
<a href="#" id="2" value="155" onclick="maFction(4,'def',12)">lien 2</a><br/>
<a href="#" id="2" value="44" onclick="maFction(5,'ghi',13)">lien 3</a><br/>
JS :
function maFction(p1,p2,p3)
{
document.window.opener.document.getElementById('idcible1').value=p1 ;
document.window.opener.document.getElementById('idcible2').value=p2 ;
document.window.opener.document.getElementById('idcible3').value=p3 ;
} |
En JQuery, le code HTML devient :
Code:
1 2 3 4 5 6
|
HTML :
<a href="#" id="1" value="5" >lien 1</a><br/>
<a href="#" id="2" value="155" >lien 2</a><br/>
<a href="#" id="2" value="44" >lien 3</a><br/> |
...puisque l'appel à onclick est sorti de l'HTML.
Vous le voyez, il y a deux questions :
1- les liens "a" sont construits dynamiquement avec une boucle côté PHP. Chaque onclick appelle donc la même fonction JS mais avec des paramètres différents. Comment faire ça en JQuery ?
Je vois bien un $('a').click... mais pour passer les paramètres ?
Éventuellement les stocker dans les attributs comme alt, title, value... mais quid si on a 10 paramètres ? Sans compter qu'on n'a peut être pas envie de polluer ses attributs avec des données techniques !
Code:
1 2 3 4 5 6 7 8 9
|
JQuery :
$(document).ready(function(){
$("a").click(function(event){
..... ???? .... ;
event.preventDefault();
});
}); |
EDIT :
Après moultes recherches je suis tombé sur ce débat intéressant :
http://stackoverflow.com/questions/1...tom-attributes
Il y a les "pour" et les "contre". La solution avec un namespace propre me semble être un bon compromis même si la page n'est plus valide à validator.w3.org .
2- Vous voyez que cette page est en fait une popup et doit mettre à jour l'appelant via un document.window.opener.document.getElementById...
Quel est l'équivalent en JQuery ?
EDIT : J'ai trouvé pour ce point :
Code:
1 2 3 4
| //cas d'une zone bloc (div...) :
window.opener.jQuery("#test").text(.......);
//cas d'une champ d'un fomulaire (input) :
window.opener.jQuery("#test2").attr('value',$(this).attr('id')) ; |
N'hésitez pas à me demander des explications en cas de besoin :)
Merci
Cordialement