Вопрос по jquery, event-handling – jQuery - конвертировать .live () в .on ()

6

Как мне объединить этот старый код jQuery в v1.7.on()?

v1.3.live():

    $('#results tbody tr').live({
    mouseenter:
       function () { $(this).find('.popup').show(); },
    mouseleave:
       function () { $(this).find('.popup').hide(); }
    });

v1.7.on():

$('#results tbody').on('mouseenter', 'tr', function () {
    $(this).find('.popup').show();
});
$('#results tbody').on('mouseleave', 'tr', function () {
    $(this).find('.popup').hide();
});

Я хочу передать оба обработчика событий одному.on() звоните, но держите делегацию блестящего события.on() позволяет мне сделать.

Спасибо!

Нет, проблем нет, я просто хочу передать оба обработчика событий в один объект, как я делаю в первом примере. Спасибо за супер быстрый ответ, кстати. pilau
Что & APOS; не так с твоим вторым примером? Вы могли бы связать обаon() Отзывает один селектор, но кроме этого я не вижу проблем. Rory McCrossan
TJ. отвечает на реальный вопрос, но Рори прав в том, что в таком случае вы могли бы просто использовать один метод обработчика dyanmic. JMM

Ваш Ответ

4   ответа
10

$('#results tbody').on({
    'mouseenter' : function () {
        $(this).find('.popup').show();
     },
    'mouseleave' : function () {
        $(this).find('.popup').hide();
    }
}, 'tr');

документация по jQuery:

.on( events-map [, selector] [, data] ),
events-map A map in which the string keys represent one or more space-separated event types and optional namespaces, and the values represent a handler function to be called for the event(s).

Error: User Rate Limit Exceeded pilau
0

live вon должно быть все что тебе нужно

 $('#results tbody tr').on({
mouseenter:
   function () { $(this).find('.popup').show(); },
mouseleave:
   function () { $(this).find('.popup').hide(); }
})

Увидеть:http://api.jquery.com/on/#example-6

Error: User Rate Limit Exceeded pilau
3

like I do in the first example.

В этом случае вы можете присоединить два события вместе, а затем дифференцировать их в самом обработчике, например так:

$('#results tbody').on('mouseenter mouseleave', 'tr', function (e) {
    if (e.type == "mouseenter") {
        $(this).find('.popup').show();
    }
    else {
        $(this).find('.popup').hide();
    }
});
Error: User Rate Limit Exceeded pilau
1

жить

$(document).on({...events...}, selector, data);

-или же-

$(document).on(event, selector, data, callback);

Код дляlive функция в 1.7+ теперь просто сквозная функция:

live: function( types, data, fn ) {
    jQuery( this.context ).on( types, this.selector, data, fn );
    return this;
}

Похожие вопросы