Применить jQuery к созданным элементам - PullRequest
0 голосов
/ 17 сентября 2010

Возможно, это глупый вопрос, но я новичок в jQuery и пытаюсь создать лайтбокс с формой в нем. Пока все хорошо, но теперь я хочу сделать проверку созданной формы, но это проблема. Я создаю форму с помощью следующего метода:

<code>
 $("a").click(function(){
  if(this.rel == "box"){
   $("body").append('').append('');
   $("#shadowContent").append('Sluit venster - Your total price is &euro;55,-').append('');
   $("#closeBox").click(function(c) {
    c.preventDefault();
    $("#shadow").add($("#shadowContent"),$("#closeBox")).fadeOut(500);
   });
   $("#shadow").add($("#shadowContent")).fadeIn(500);
   $("#shadowContent").show().css({'width':'750px','top':'25px','left':'50%','margin-left':'-400px'});
   $("#content").load('<a href="http://www.domain.nl/tmp/make" rel="nofollow noreferrer">http://www.domain.nl/tmp/make</a>');

Теперь, когда я пытаюсь добавить следующий код, чуть ниже кода выше, форма отправляется, и я не получаю необходимое предупреждение.

<code>
   $("#reservationForm").submit(function(f){
    f.preventDefault();
    alert("Jawel");
   });

Моя форма выглядит (упрощенно) так:

<code>
<code><form id="reservationForm"</code>>
 <code><fieldset</code>>
   <code><legend</code>>Legend<code></legend</code>>
     ...
  <code></fieldset</code>>
 <code><fieldset</code>>
   <code><legend</code>>Legend<code></legend</code>>
     ...
  <code></fieldset</code>>
 <code><button type="submit"</code>>
<code></form</code>>

Вся форма находится в новом документе (make.php), который загружается в мой лайтбокс через jQuery. Как я могу применить проверку к полям в моей форме? Я хочу сохранить свой jQuery в одном файле, поэтому было бы неплохо, если бы мне не нужно было помещать проверку в сам make.php ..

Ответы [ 2 ]

1 голос
/ 17 сентября 2010

Вы можете использовать .live() для того, что вы хотите, например:

$("#reservationForm").live("submit", function(f){
  f.preventDefault();
  alert("Jawel");
});

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

0 голосов
/ 17 сентября 2010

для автоматического связывания событий с созданным DOM вы можете использовать .live();

eg:

jQuery('.red').live('click',_functionDoSomething);

теперь в будущем, если вы добавите больше элементов с class = red, к ним будет прикреплена функция = _functionDoSomething alreday * *

...