.live()
должен использоваться на селекторе. Соответствует ли целевой элемент события строке селектора, проверяется во время события. На это намекают в документе «предостережения»:
Методы обхода DOM не полностью поддерживаются для поиска элементов для отправки в .live (). Скорее, метод .live () всегда должен вызываться непосредственно после селектора, как в примере выше.
$(document)
не является селектором. Если вы посмотрите на $(document).selector
, то есть запомненную строку селектора, которую live()
использует для сопоставления, вы получите пустую строку, следовательно, live()
не работает.
Поскольку селекторы соответствуют только элементам, вы не можете live
-связать с document
. Опять же, поскольку document
никогда не изменяется, в этом нет необходимости: нормальное связывание будет в порядке.
(Это неудачный дизайн API. Должно быть, $.live('selector', 'event', function() {});
IMO. $('selector').live()
делает неясным, что он на самом деле делает. И, конечно, должна быть ошибка при вызове live()
в оболочке без селектора. .)