2012-04-02 4 views
5

Как вы можете или не знать о jQuery 1.7, вся система событий была переписана с нуля. Кодовая база намного быстрее, и с новым методом .on() существует много единообразия для проводки обработчиков событий.Как получить доступ к внутренним данным jquery?

Один используется, чтобы иметь возможность доступа к внутренним данным событий и investiate каких событий регистрируются на любом элементе, но в последнее время этой внутренняя информации была скрыта на основе следующего сценария ...

Кажется, что «частные» данные ВСЕГДА хранятся в .data (jQuery.expando). Для «объектов», где удаление объекта также должно удалять его кеши, это имеет смысл.

В области узлов однако, я думаю, что мы должны хранить эти «частные» член в отдельном (частном) кэша, так что они не загрязняют объект, возвращаемый $ .fn.data()»

Хотя я согласен с приведенным выше изменением, чтобы скрыть внутренние данные, я обнаружил, что доступ к этой информации может быть полезен для отладки и модульного тестирования.

Каким был новый способ получения внутреннего объекта события jquery в jQuery 1.7 ?

ответ

3

В jQuery 1.7 события хранятся в альтернативном местоположении, доступном через внутренний $._data() (но учтите, что этот метод задокументирован как только для внутреннего использования в исходном коде, поэтому используйте его на свои собственные риски и будьте готовы к его изменению или исчезновению в будущих версиях библиотеки).

Чтобы получить события, зарегистрированные на элементе, вы можете вызвать $._data() на этот элемент и изучить свойство events возвращаемого объекта. Например:

$("#yourElement").click(function() { 
    // ... 
}); 

console.log($._data($("#yourElement")[0]).events);