Будет ли $ (document) .ready (function () {...}) очищать все предыдущие обработчики событий, зарегистрированные с готовым документом? - PullRequest
3 голосов
/ 01 февраля 2012

У меня есть сомнения по поводу функции .ready () в JQuery. В частности, рассмотрим ситуацию, когда кто-то связал некоторый обработчик с событием готовности документа, и я выполняю

$(document).ready(function(){ /* my code here */ })

Будет ли это перезаписывать ранее зарегистрированный обработчик или только добавлять новый (мой) к событию?

Спасибо

Ответы [ 7 ]

3 голосов
/ 01 февраля 2012

Ответ таков: он добавляется в набор обработчиков событий для этого события. Это также легко проверить:

$(document).ready(function(){alert('test1');});
$(document).ready(function(){alert('test2');});
3 голосов
/ 01 февраля 2012

Согласовано.Вы можете использовать эту функцию столько раз, сколько захотите.Вот документация JQuery.

http://docs.jquery.com/Tutorials:Multiple_$(document).ready()

Все функции, $ (document) .ready (), $ (window) .load () вместе с привязками, такими как click all, добавляются в стек.Таким образом, вы можете использовать $ (document) .ready во всех ваших файлах javaascript.

2 голосов
/ 01 февраля 2012

Он добавит ваш новый обработчик событий к существующим обработчикам, если эти обработчики также были добавлены с jQuery.ready.Если они были добавлены напрямую через DOM, они будут перезаписаны.

1 голос
/ 01 февраля 2012

Нет, он добавляет ваш обработчик в набор.

0 голосов
/ 01 февраля 2012

Это добавит новую функцию в стек обработчика. Кроме того, если он запускается после инициализации DOM, функция будет выполнена немедленно.

0 голосов
/ 01 февраля 2012

Как и все обработчики событий, которые вы связываете через jQuery, он будет добавлен в очередь обработчиков событий для элемента / события.

jQuery имеет event.stopImmediatePropagation(), чтобы остановить выполнение обработчика событий, присоединенного к тому же элементу: http://api.jquery.com/event.stopImmediatePropagation/

0 голосов
/ 01 февраля 2012

Он будет перемещен в стек, поэтому он не будет переопределен.

...