2017-06-21 120 views
1

简短的问题,我如何更有效地写下面的代码,所以我不重复地分配父变量的新值?分配jquery里面的变量或javascript绑定

此绑定函数与使用对象文字相同吗?

function bindAuthorPopup() { 
     $(".insight-author").on({ 
      mouseenter: function (event) { 
       var parent = $(this).parent('div').find('.popup-content'); 
       parent.toggleClass('show'); 
      }, 
      mouseleave: function (event) { 
       var parent = $(this).parent('div').find('.popup-content'); 
       parent.toggleClass('show'); 
      },    
     }); 
    } 
+0

mouseenter和mouseleave看起来都一样吗? –

+2

您可以创建一个函数,以便您只需执行'var parent = getParent(this);'。但是没有办法避免在每个处理程序中创建'parent',因为'this'可能指向不同的元素。当然,如果你在两个处理程序中完全一样,只需定义一次函数并将它用于两个事件。 –

回答

1

您可以将空格分隔的事件类型传递给“on”方法。

function bindAuthorPopup() { 
    $(".insight-author").on('mouseenter mouseleave', function (event) { 
     var parent = $(this).parent('div').find('.popup-content'); 
     parent.toggleClass('show'); 
    }); 
} 
3

你可以做这样的事情:

function bindAuthorPopup() { 
    $(".insight-author").each(function() { 
     var elem = $(this); 
     var parent = elem.parent('div').find('.popup-content'); 
     elem.on({ 
      mouseenter: function (event) { 
       parent.toggleClass('show'); 
      }, 
      mouseleave: function (event) { 
       parent.toggleClass('show'); 
      }, 
     });  
    }); 
} 

这个工程即使回调是不同的。如果它们总是相同的,那么你可以使用@ sh1da9440写的。