2

jQueryで次のリスナーをどのように書き直すことができるのだろうかon()

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

何か案は?

4

2 に答える 2

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()

.on()forデリゲートイベント(別名ライブイベント)の構文は次のとおりです。

$( StaticParent ).on( eventName, target, handlerFunction );
于 2012-07-19T11:07:24.190 に答える
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が、ページの存続期間中存在することが保証されている最も近い親を使用することができます。

于 2012-07-19T11:12:38.190 に答える