Когда я пишу JavaScript, у меня есть набор интерфейсных кнопок, которые имеют свои события, назначенные при загрузке страницы. Моя проблема - это что-то, созданное динамически, не будет получать эти события.Обработка событий Javascript после загрузки страницы
Например, я делаю проверку URL-адреса, кто должен работать, чтобы удостовериться, что любая ссылка, которая идет в другой домен, вызывает интерфейс выхода, позволяя пользователю знать, что они уходят. Любые ссылки, созданные после загрузки страницы, отправляют ajax (не предназначен для каламбуров) или что-то еще не будет иметь это событие естественно, как те, которые существовали при загрузке страницы.
На практике, что является лучшим способом обеспечить, чтобы все вновь созданные элементы получали такие виды глобальных событий?
Мне нравится использовать jQuery, но это действительно концептуальный вопрос.
Должен ли я создать функцию для повторного применения любых глобальных эффектов ссылок, или есть более умный способ, помимо этого, по частям?
Как курьез, кто-нибудь знают, как .live() работает? Это тайм-аут или фактическое событие dom? Также может ли он обрабатывать более сложные фильтры, например, когда href соответствует набору требований? (начинается с http и т. д.) –
@Bob: из [jQuery's docs] (http://api.jquery.com/live/#event-delegation): * Метод .live() способен влиять на элементы, которые не имеют но был добавлен в DOM с помощью делегирования событий: обработчик, связанный с элементом предка, отвечает за события, которые запускаются на его потомках. Прошел обработчик.live() никогда не привязан к элементу; вместо этого .live() связывает специальный обработчик с корнем дерева DOM. * - Таким образом, это похоже на 'delegate()', но работает в корне DOM, и поэтому обычно имеет смысл использовать [ 'делегат()'] (http://api.jquery.com/delegate/). – treeface
@Bob: поскольку с помощью селектора выбираются только атрибуты, начинающиеся с «http», см. Раздел [атрибут jQuery начинается с селектора] (http://api.jquery.com/attribute-starts-with-selector/). В вашем случае вы делаете что-то вроде '$ ('a [href^=" http "'). Live (...)' – treeface