我找到了一种方法,可以使用 for 循环将数组中的单个元素绑定(bind)到 jQuery 中的事件处理程序。
本指南对插入我朝那个方向很有用:
http://www.foliotek.com/devblog/keep-variable-state-between-event-binding-and-execution/
现在我更深入了一个层次,我正在尝试将数组中具有相同前缀的多个元素绑定(bind)到 jQuery 中的事件处理程序。
这是有效的:
var menu=new Array("#power","#services","#cashback","#schedule");
$(document).ready(function(){
$(function() {
for(var i in menu)
{
(function() {
var x = menu[i];
var y = menu[i]+'_menu';
$(x).hover(
function () {
$(x).css({ backgroundColor: "#000", color: "#3ABCEF"});
$(y).show();
},
function () {
$(x).css({ backgroundColor: "#333", color: "#FFF"});
$(y).hide();
}
);
$(y).hover(
function () {
$(x).css({ backgroundColor: "#000", color: "#3ABCEF"});
$(y).show();
},
function () {
$(x).css({ backgroundColor: "#333", color: "#FFF"});
$(y).hide();
}
);
})();
}
});
});
这是我真正想要的:
var menu=new Array("#power","#services","#cashback","#schedule");
$(document).ready(function(){
$(function() {
for(var i in menu)
{
(function() {
var x = menu[i];
var y = menu[i]+'_menu';
$(x,y).hover(
function () {
$(x).css({ backgroundColor: "#000", color: "#3ABCEF"});
$(y).show();
},
function () {
$(x).css({ backgroundColor: "#333", color: "#FFF"});
$(y).hide();
}
);
})();
}
});
});
UPDATE::: 这是最终的工作实现:
var menu=new Array("#power","#services","#cashback","#schedule");
$(document).ready(function(){
for(var i in menu)
{
(function(x, y) {
$(x+','+y).hover(
function () {
$(x).css({ backgroundColor: "#000", color: "#3ABCEF"});
$(y).show();
},
function () {
$(x).css({ backgroundColor: "#333", color: "#FFF"});
$(y).hide();
}
);
})(menu[i], (menu[i] + '_menu'));
}
});
最佳答案
替代变量 x 和 y 设置函数参数运行 @param
(function(x, y) {
$(x+','+y).hover(
function () {
$(x).css({ backgroundColor: "#000", color: "#3ABCEF"});
$(y).show();
},
function () {
$(x).css({ backgroundColor: "#333", color: "#FFF"});
$(y).hide();
}
);
})(menu[i], (menu[i] + '_menu'));
关于javascript - 在javascript中使用for循环将多个元素绑定(bind)到事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12612735/