不推荐使用jQuery live():使用on for mouseenter和mouseout?

时间:2012-07-19 11:06:00

标签: javascript events deprecated jquery

我想知道如何用jQuery on()

重写以下监听器
$('.box').live({
        mouseenter:
        function() {
            $(this).children('.menu').stop(true, true).fadeIn(fadeIn);
        },
        mouseleave:
        function() {
            $(this).children('.menu').stop(true, true).fadeOut(fadeOut);
        }
    });

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

$(document).on('hover', '.box', function(e) {
  if( e.type == 'mouseenter') {
    $(this).children('.menu').stop(true, true).fadeIn(fadeIn);
  } else {
    $(this).children('.menu').stop(true, true).fadeOut(fadeOut);
  }
});

而不是document,最好使用.box的任何非动态的父元素。

了解 .on()

委托事件(aka live event)的.on()语法是:

$( StaticParent ).on( eventName, target, handlerFunction );

答案 1 :(得分:2)

对于完全 .on等效:

$(document).on({
    mouseenter: function() {
        $(this).children('.menu').stop(true, true).fadeIn(fadeIn);
    },
    mouseleave: function() {
        $(this).children('.menu').stop(true, true).fadeOut(fadeOut);
    }
}, '.box');

虽然这里的主要好处是您不需要使用document,但您可以使用在页面生命周期内保证存在的最近父级。