jquery добавлен HTML не обнаруживает JavaScript? - PullRequest
1 голос
/ 10 октября 2010

извините, если мой вопрос deosnt имеет смысл, но это лучший способ, которым я могу его выразить, у меня есть этот jquery-скрипт, который, когда пользователь нажимает на ссылку для входа, добавляет для этого форму html, которая работает нормально, но добавляется (форма входа в систему) использует jquery для входа на сайт, но, похоже, он не обнаруживает JavaScript,

против, когда я помещаю форму входа без добавления, просто нормально на странице, работает нормально, обнаруживает javascript, но не при добавлении.

Я надеюсь, вы понимаете, что я только что сказал, спасибо:))

код немного длинный, но я сократил его для целей иллюстрации.

http://jsfiddle.net/YHCwM/1/

Ответы [ 2 ]

4 голосов
/ 10 октября 2010

Это потому, что обычно jQuery привязывает события к элементам, уже находящимся в DOM, при первом запуске сценариев. Элементы, добавленные позже, должны быть связаны по-другому, часто используя .live().

Вместо:

$('#elementAddedLater').click(function(){/*....*/});

попробовать:

$('#elementAddedLater').live('click',function(){/*....*/});

Имя связанной функции, приведенное выше, дает информацию о других событиях, которые могут быть связаны через .live()

Как отмечает @Pointy ниже, также стоит взглянуть на .delegate(), который, по-видимому, предлагает те же функции, что и .live(), но более лаконично и четко.

1 голос
/ 10 октября 2010

Причина, по которой это происходит, - ваша последовательность событий:

  1. DocumentLoad запускает
  2. Присоедините обработчик submit() к элементу, который еще не существует - так что никаких обработчиков
  3. Пользователь нажимает кнопку, которая добавляет элемент на страницу

Это можно исправить с помощью живых событий илиизменение порядка.(Прямая связь с событием submit является новой с JQuery 1.4.1 IIRC).

$('#regForm2').live('submit', function(e){});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...