javascript - jQuery优化多次悬停代码

标签 javascript jquery dictionary indexing hover

这是我的代码:

$('.tab_map1 area').hover(function(){
    $('#nav1').find('a').stop().toggleClass('hover', 500);
        return false;
});
$('.tab_map2 area').hover(function(){
    $('#nav2').find('a').stop().toggleClass('hover', 500);
        return false;
});
$('.tab_map3 area').hover(function(){
    $('#nav3').find('a').stop().toggleClass('hover', 500);
        return false;
});
$('.tab_map4 area').hover(function(){
    $('#nav4').find('a').stop().toggleClass('hover', 500);
        return false;
});

... (there's 8 of them)

我不想多次重复相同的代码,而是想以某种方式对其进行优化。有机会用一些索引值替换 .tab_map1-8 和 #nav1-8 吗?

我试过:

var n = 8;
$('li.tab_map area').eq(n).hover(function(){
    $('#nav').eq(n).find('a').stop().toggleClass('hover', 500);
        return false;
});

和:

$("#navibar ul").each(function(index) {
$('.tab_map:eq(' + index + ') area').hover(function(index){
    $('#nav:eq(' + index + ')').find('a').stop().toggleClass('hover', 500);
        return false;
});
});

两者都不行。

最佳答案

最简单的方法是在 1-8 的范围内使用 for 循环。然后为每个索引建立选择器。例如

for (var i = 1; i <= 8; i++) {
  var helper = function (sel, id) {
    $(sel).hover(function() {
      $(id).find('a').stop().toggleClass('hover', 500);
      return false;
    });
  };

  helper('.tab_map' + i + ' area', '#nav' + i);
}

关于javascript - jQuery优化多次悬停代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7285981/

相关文章:

c# - 如何在 jquery onkeyup 上触发 TextBox.TextChanged 事件?

jquery - 自动图像 slider 在桌面上工作,但在移动设备上不工作

javascript - 选择菜单中 HTML 表单表格中的总值(value)

python - 添加字典值的元素

javascript - 为什么Meteor把js全部放在开头呢?

javascript - 是否可以从网站运行不和谐机器人命令

javascript - 如何通过它的 id 删除我的 ul 中的所有 li?

javascript - jQuery 插件只运行一次

python - 实现具有多个索引的字典的数据结构?

java - 如何将映射的键设置为变量名