J'ai un menu multiple sur ma page qui utilisent tous les mêmes événements mouseover et click, j'ai donc décidé de l'intégrer dans une fonction. Cependant, les vars semblent toujours être affectés au dernier argument de la fonction hover (fonction, fonction).jQuery et la fermeture
$(document).ready(function() {
menuMouseOver = function() {
for(i=0, u=arguments.length; i<u; i++){
var parent = arguments[i].parent;
var active = arguments[i].active;
var childSelect = arguments[i].childSelect;
console.log(active); //logs the correct active
$(parent).children(childSelect)
.not('.'+active).each(function(i, e) {console.log(active);})
//The above console.log logs the correct active
.hover(function() {
console.log(active); //this one always logs menu2_active
$(this).addClass(active);
}, function() {
$(this).removeClass(active);
});
}
}
menuMouseOver({ parent: '#menu1',
active: 'menu1_active',
childSelect: ':gt(0)'},
{ parent: '#menu2',
active: 'menu2_active',
childSelect: ':gt(0)'});
});
Pourquoi est que le dernier console.log sera enregistre toujours le dernier actif au lieu de celui qui appartient aux arguments [i] .active. (Dans cet exemple, il enregistre toujours le actif des arguments [1] .active) Qu'est-ce que je fais mal?
En outre, la fonction réelle est plus complexe, mais le problème est également présent dans cette variante.
Merci beaucoup. –