我的页面上有一个多个菜单,它们都使用相同的鼠标悬停和单击事件,所以我决定将它放入一个函数中。然而 vars 似乎总是被分配给 hover(function, function) 函数的最后一个参数。
$(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)'});
});
为什么最后一个console.log 将始终记录最后一个活动而不是属于arguments[i].active 的那个。(在这个例子中,它总是记录参数 [1].active 的活动)我做错了什么?
此外,实际功能更复杂,但此变体中也存在问题。