使jQuery代码更简单

DCd*_*daz 5 javascript jquery

我想知道是否有人对如何使我的代码更加简化有任何想法,所以它不是那么重.

 var t;
 $(".sn-fresh").mouseenter(function() {
   $(".um-cat").hide();
   clearTimeout(t);
   $("#ultra-menu, #um-fresh").fadeIn(600);
 });

 $(".sn-salt").mouseenter(function() {
   $(".um-cat").hide();
   clearTimeout(t);
   $("#ultra-menu, #um-salt").fadeIn(600);
 });

 $(".sn-shoot").mouseenter(function() {
   $(".um-cat").hide();
   clearTimeout(t);
   $("#ultra-menu, #um-shoot").fadeIn(600);
 });

 $(".sn-eques").mouseenter(function() {
   $(".um-cat").hide();
   clearTimeout(t);
   $("#ultra-menu, #um-eques").fadeIn(600);
 });

 $(".sn-cloth").mouseenter(function() {
   $(".um-cat").hide();
   clearTimeout(t);
   $("#ultra-menu, #um-cloth").fadeIn(600);
 });

 $(".sn-brand").mouseenter(function() {
   $(".um-cat").hide();
   clearTimeout(t);
   $("#ultra-menu, #um-brand").fadeIn(600);
 });

 $("#ultra-menu").mouseleave(function() {
   clearTimeout(t);
   t = setTimeout(function() {
     $("#ultra-menu, .um-cat").fadeOut(600);
   }, 300);
 });
 $("#main-navigation a").mouseleave(function() {
   clearTimeout(t);
   t = setTimeout(function() {
     $("#ultra-menu, .um-cat").fadeOut(600);
   }, 300);
 });
 $("#ultra-menu").mouseenter(function() {
   clearTimeout(t);
   $("#ultra-menu").fadeIn(600);
 });
Run Code Online (Sandbox Code Playgroud)

MT0*_*MT0 10

你可以通过消除重复的代码使它更干!

var names = ["fresh","salt","shoot","eques","cloth","brand"];

names.forEach( function( name ){
  $(".sn-"+name).mouseenter(function() {
    $(".um-cat").hide();
    clearTimeout(t);
    $("#ultra-menu, #um-" + name ).fadeIn(600);
  });
});
Run Code Online (Sandbox Code Playgroud)

并且:

$("#ultra-menu, #main-navigation a").mouseleave(function() {
  clearTimeout(t);
  t = setTimeout(function() {
    $("#ultra-menu, .um-cat").fadeOut(600);
  }, 300);
});
Run Code Online (Sandbox Code Playgroud)

要么:

var menus = [ "#ultra-menu", "#main-navigation a" ];

menus.forEach( function( menu ){
  $(menu).mouseleave(function() {
    clearTimeout(t);
    t = setTimeout(function() {
      $("#ultra-menu, .um-cat").fadeOut(600);
    }, 300);
  });
});
Run Code Online (Sandbox Code Playgroud)