5

Добрый день.

Чем отличается метод .bind() от .on() в jQuery?

Например:

$('div').on('click',function(){...})
$('div').bind('click',function(){...})

3 Answers3

13

.on() - новый метод установки обработчиков событий. Введен в 1.7. Объединяет в себе функциональность .bind(), .live(), .delegate(). Начиная с 1.7 эти три метода считаются устаревшими.

KiTE
  • 8,180
  • .live устаревшее?
    разве .live от .on не отличается тем что .live поддерживает элементы добавленные динамически на страницу, а .on - нет ?
    – Denis Masster Jun 01 '12 at 10:08
  • 2
    Вы внимательно читаете?

    .on() объединяет в себе функциональность .bind(), .live(), .delegate().

    То-есть, .on() не может отличаться от .live(), потому что .live() выполняется через .on(), и, по сути, является подмножеством. А то что он считается устаревшем это в офф. документации написано. Ключевое слово "Deprecated".

    – KiTE Jun 01 '12 at 10:36
  • on прекрасно работает с динамически добавленными елементами, нужно использовать этот метод для динамики, через делегирование!!!! – markuper Jun 03 '12 at 08:55
  • анука заставьте метод .on работать с динамически добавленными элементами http://jsfiddle.net/MEthJ/ – Denis Masster Aug 10 '12 at 12:48
  • Читаем мануалы внимательно и делаем так:
    $(document).on('click', '#live', function(){});
    
    

    А еще можно глянуть в исходник и, к своему удивлению, обнаружить что:

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

    Плюс ключевик Deprecated как бы намекает...

    – KiTE Aug 10 '12 at 12:59
  • http://jsfiddle.net/MEthJ/35/ - таким образом? – Vladimir Novopashin Sep 13 '17 at 07:45
2

В последнем jQuery метод .bind() считается устаревшим, но еще поддерживающимся, при его вызове происходит вызов .on()

bind: function( types, data, fn ) {
        return this.on( types, null, data, fn );
    } //код из jquery-1.7.2

Читайте полное описании метода .on()

makregistr
  • 3,231
1

По сути одно и тоже, но с официальной документации

As of jQuery 1.7, the .on() method is the preferred method for attaching

event handlers to a document.

Maksym Prus
  • 2,884