Я думаю, что документы jQuery могут немного вводить в заблуждение, если только он не делает что-то действительно особенное, чтобы обойти проблему.
События загрузки элементов, таких как изображения, не всплывают. 1 , 2
Поскольку они не всплывают, document
делаетне знаю, было ли инициировано событие загрузки.
Поскольку document
не знает о событии загрузки, прямое отображение станет бесполезным, поскольку прямое включение зависит от событий, восходящих к документу, и как только они это сделают,он сопоставляет цель события с селекторами, которые у него уже есть в файле, и, если что-либо совпадает, для этого элемента запускается обработчик события.
Например, предположим, что вы зарегистрировали следующее прямое событие:
$("#container > input").live("change", function() {
alert("changed");
});
, затем jQuery добавит прослушиватель события изменения в объект документа, если он еще не существует (аналогично):
$(document).bind("change", function() {
..
});
Когда любое событие изменения всплывает в документе, онопроходит через каждый зарегистрированный выборr и проверяет, содержит ли какой-либо из результирующих узлов для данного селектора цель события (элемент, из которого произошло событие).Если он присутствует, то для этого события запускается соответствующий «живой» обработчик события.
Ничего из этого не возможно, если документ не будет знать о событии в первую очередь.
Если я не ошибаюсь и у jQuery есть какой-то секретный соус для этого, вам следует напрямую связать событие загрузки, а не делать это через live.
$("selector").bind("load", function() { .. });