我在我的頁面上有一個多個菜單,它們全部使用相同的鼠標懸停和點擊事件,因此我決定將它變成一個函數。然而,變量似乎總是被分配給懸停(函數,函數)函數的最後一個參數。jQuery和關閉
$(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將始終記錄最後活躍而不是屬於參數[I]。活躍的一個。 (在這個例子中,它始終記錄下有效的的參數[1] .active) 我在做什麼錯了?
此外,真正的功能更復雜,但問題也出現在這個變體中。
非常感謝。 – 2009-01-29 18:26:00