将jQuery应用于创建的元素

时间:2010-09-17 09:42:06

标签: jquery append lightbox

也许是一个愚蠢的问题,但我是jQuery的初学者,我正在尝试制作一个带有表单的灯箱。到目前为止一切顺利,但现在我想对创建的表单进行验证,但这就是问题所在。我通过以下方法创建表单:


 $("a").click(function(){
  if(this.rel == "box"){
   $("body").append('').append('');
   $("#shadowContent").append('Sluit venster - Your total price is €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('http://www.domain.nl/tmp/make');

现在,当我尝试添加以下代码时,在上面的代码下面,表单提交,我没有收到所需的警报。


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

我的表单看起来(简化)如下:


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

整个表单位于一个新文档(make.php)中,该文档通过jQuery加载到我的灯箱中。如何将验证应用于表单中的字段?我想把我的jQuery保存在一个文件中,所以如果我不必将验证放在make.php本身就好了。

2 个答案:

答案 0 :(得分:1)

您可以将.live()用于所需内容,例如:

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

.live()事件处理程序的工作略有不同,它们不在元素本身上(它为document添加了一个处理程序),因此它可以在添加的 future 元素上工作通过向bubble up收听他们的活动来访问该页面,无论何时添加元素,事件都会以相同的方式冒泡。

答案 1 :(得分:0)

要将事件自动绑定到dom,您可以使用.live();

eg:

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

现在将来如果你添加更多带有class = red的元素,他们将有函数= _functionDoSomething alreday附加到他们