javascript - 在javascript中使用for循环将多个元素绑定(bind)到事件处理程序

标签 javascript jquery html css

我找到了一种方法,可以使用 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/

相关文章:

javascript - 是否有可能获得当前在 D3 力模拟中活跃的力列表?

javascript - 将子项连接到父项

javascript - JS elementFromPoint 获取检索到的元素下方的元素

jquery - 导航栏容器不会改变颜色

javascript - 无法使用 CSS 正确格式化嵌套表格

javascript - 我如何从这个 firebase 集合查询函数中获取 "retArr"数组。我希望数组值用于另一个函数

JQuery:访问 LI 节点?

javascript - 手机网站滑动菜单默认不隐藏,可滚动

javascript - 这个indexOf查询不起作用有什么原因吗?

javascript - jquery隐藏之前用jquery click功能加载的div