Почему .live () не будет работать с моим настраиваемым событием, а .bind () будет? - PullRequest
0 голосов
/ 27 апреля 2010

Я думаю, что это ошибка, но в версии 1.4.2 .live() должна поддерживать пользовательские события. Вот небольшая демонстрация: http://jsbin.com/erofi/edit

Это ошибка или я что-то не так делаю с моими триггерами?

Ответы [ 2 ]

2 голосов
/ 27 апреля 2010

.live() должен использоваться на селекторе. Соответствует ли целевой элемент события строке селектора, проверяется во время события. На это намекают в документе «предостережения»:

Методы обхода DOM не полностью поддерживаются для поиска элементов для отправки в .live (). Скорее, метод .live () всегда должен вызываться непосредственно после селектора, как в примере выше.

$(document) не является селектором. Если вы посмотрите на $(document).selector, то есть запомненную строку селектора, которую live() использует для сопоставления, вы получите пустую строку, следовательно, live() не работает.

Поскольку селекторы соответствуют только элементам, вы не можете live -связать с document. Опять же, поскольку document никогда не изменяется, в этом нет необходимости: нормальное связывание будет в порядке.

(Это неудачный дизайн API. Должно быть, $.live('selector', 'event', function() {}); IMO. $('selector').live() делает неясным, что он на самом деле делает. И, конечно, должна быть ошибка при вызове live() в оболочке без селектора. .)

0 голосов
/ 27 апреля 2010

Я не думаю, что вы можете делегировать события в 'Document'.
Не совсем уверен, но я думаю, что .live() пока не всплывет.

Попробуйте .bind() и.trigger() к другим элементам под document.body

...