forループを使用して配列内の単一要素をjQueryのイベントハンドラーにバインドする方法を見つけました。
このガイドは、私をその方向に進めるのに役立ちました:
http ://www.foliotek.com/devblog/keep-variable-state-between-event-binding-and-execution/
今、私は1レベル深くなり、配列内の同じプレフィックスを持つ複数の要素を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();
}
);
})();
}
});
});
更新:::これが最終的な作業の意味です:
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'));
}
});