Как стать автором
Обновить

Комментарии 13

НЛО прилетело и опубликовало эту надпись здесь
Ну я бы не сказал, что это однозначно правильно (и что это неправильно тоже бы не сказал), т.к. даже если заглянуть в код jQuery:
// For internal use only.
_data: function( elem, name, data ) {
    return jQuery.data( elem, name, data, true );
},

То мы увидим, что во-первых комментарий к этой функции: «For internal use only», а во-вторых она все равно вызывает jQuery.data
НЛО прилетело и опубликовало эту надпись здесь
Я про тоже хотел написать :)
jQuery версии 1.4.2, и, в принципе то, он работать должен, просто я пишу приложение под SmartTV, где требуется использовать именно jQuery, который записан в телевизор. И даже при том, что это 1.4.2, на некоторых старых телевизорах работает он все равно не совсем правильно, т.к. браузер в телевизоре — это как IE7, только со своими причудами.
jQuery записан в телевизор
Будущее здесь.

А как насчет работы с этими обработчиками? И есть ли возможность через этот массив грубо говоря, повесить обработчик на обработчик?
Извините если глупость спросил, но иногда такая задача возникает, особенно при работе со сторонними плагинами.
теперь я знаю правильный ответ: обработчики событий jQuery хранит в телевизоре.
Спасибо, очень интересная статья.
Просто хочу оставить здесь ссылку на Visual Event: www.sprymedia.co.uk/article/Visual+Event (визуализация обработчиков jQuery). Возможно кто-то не знает.
P.S.: Полагаю, что конкретно в вашем случае он вероятнее всего не помог бы.
Этот кусок немного про другое.
$(elem).data('events');

Это если у нас есть элемент
<div data-events="foo"></div>

То выполнив
$('div').data('events');

Мы получим результат foo

Это я так, для справки, т.к. в статье ничего не написано о том что на самом деле делает строчка кода из самого начала статьи.
Да, в вашем случае так и будет.
Но, если элементу не прописать «data-events», то
$('div').data('events');
вернет именно объект с обработчиками.
Способ получения обработчиков, описанный в самом начале статьи подходит, например, для получения обработчиков для объекта «document», т.к. врятли вы ему пропишите «data-events».

А в вашем приведенном примере обработчики можно получить так:
$._data( $('div').get(0) , 'events');
метод описанный автором показывает обработчики которые устанавливались с помощью jQuery.
т.е. если повесить обработчик на чистом JS то его там не увидите
Что логично, т.к. они просто так не могут оказаться в jQuery.cache. Но устанавливая обработчики нативными средствами можно добавить их в jQuery (но зачем?), например так:

var events = $.cache[document[$.expando]].events;

events.nativeHandler = 1;
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории