我想清理这个jQuery代码,有什么建议吗?

时间:2012-07-15 21:32:46

标签: jquery

我想清理这个jQuery代码,有什么建议吗?我有大约20个城市要补充。当在地图上滚动区域时,此代码将CSS类添加到每个城市。

$("#Auckland").mouseover(function(){                                                
                $(".Auckland").addClass("area");        
        }); 

        $("#Auckland").mouseout(function(){                                             
                $(".Auckland").removeClass("area");     
        }); 

        $("#Northland").mouseover(function(){                                               
                $(".Northland").addClass("area");       
        }); 

        $("#Northland").mouseout(function(){                                                
                $(".Northland").removeClass("area");        
        }); 

        $("#Rodney").mouseover(function(){                                              
                $(".Rodney").addClass("area");      
        }); 

        $("#Rodney").mouseout(function(){                                               
                $(".Rodney").removeClass("area");       
        }); 

4 个答案:

答案 0 :(得分:2)

$('#Auckland,#Northland,#Rodney').hover(function(){
     $('.'+this.id).addClass("area");
},function(){
     $('.'+this.id).removeClass("area");
});

答案 1 :(得分:2)

Plz试试这个将它们链接在一起:))

显而易见的好处是您编写的代码更少。编写和管理更容易,更快捷。但是你的代码也运行得更快。看看没有链接的第一个片段。每一行都告诉jQuery首先在整个DOM中搜索一个对象,然后在该对象上运行一个方法。当我们使用链接时,jQuery只需要一次搜索对象。

$("#Auckland,#Northland,#Rodney").mouseover(function() {
    $(this).addClass("area"); // you can do - > $("." + this.id) if you want to add calss to all the emelents with taht class
     // you can do - > you can also change it with the class name depending your needs
});

$("#Auckland,#Northland,#Rodney").mouseout(function() {
    $(this).removeClass("area");
});

好读:http://tobiasahlin.com/blog/quick-guide-chaining-in-jquery/

&安培; http://www.jquery-tutorial.net/introduction/method-chaining/

答案 2 :(得分:2)

您可以向所有元素添加类似cities的类,然后尝试:

$(".cities").mouseover(function(){                                                
     $("." + this.id).addClass("area");        
}); 

$(".cities").mouseout(function(){                                                
     $("." + this.id).removeClass("area");        
}); 

答案 3 :(得分:1)

我想这可以写成......

$('#Auckland, #Northland, #Rodney').hover(function() {
  var targetClass = this.id;
  $('.' + targetClass).addClass('area'); 
}, function() {
  var targetClass = this.id;
  $('.' + targetClass).removeClass('area');
});

你(或某人)可能只想用toggleClass来改写它,但这是一个错误的举动,请参阅:如果有人刷新一个鼠标悬停在其中一个目标物品上的页面,则悬停变得紧张。我认为,这应该是正确的。