2012-03-08 106 views
0

我只是在通过ajax加载表单时调用一个函数。我当前的代码如下所示:Jquery Live Load - 通过ajax加载表单

$('form').live("load",function() {...} 

我的AJAX调用看起来是这样的:

jQuery.ajax({ 

       type: "get", 
       url: "../design_form.php", 
       data: "coll=App_Forms&form=Step_1_Company_Sign_Up", 
       dataType: "html", 
       success: function(html){     
          jQuery('#Right_Content').hide().html(html).fadeIn(1000); 

       } 

     }) 

我知道,我可以把我的电话Ajax调用的成功部分内,但我试图尽量减少代码和resuse其他代码,所以我真的很想使用实时功能。

我正在通过ajax加载一个表单,当这个表单被加载时,我想使用jquery live来触发一个函数。当我将其设置为“点击”

$('form').live("click",function() {...} 

,但它不需要运行的每次点击此功能,我只需要它,这样是对的形式负荷运行一次,为什么我想用这工作得很好加载监听器不是点击。

谢谢。

+0

调用.die里面.live所以它会在执行一次后解除绑定。如果你使用jQuery 1.7,你应该使用.on。 – 2012-03-08 19:24:28

+0

现场没有“加载”功能,唯一的办法是通过成功回调。 – 2012-03-08 19:26:29

+0

你能回答下面的“答案”空间中的问题吗?我可以给你一个绿色的复选标记。另外,如果你能提供一个我应该把.die放在哪里的例子,我会非常感激。谢谢。 – user982853 2012-03-08 19:27:03

回答

0

编辑:我想你想拥有成功回调内部的自定义代码这将在不同的页面中使用,所以你不想在不同的页面中复制相同的Ajax调用。如果是这样,那么你应该在该成功回调中调用一个函数,并在不同页面中实现不同版本。

jQuery.ajax({ 
      type: "get", 
      url: "../design_form.php", 
      data: "coll=App_Forms&form=Step_1_Company_Sign_Up", 
      dataType: "html", 
      success: function(html){     
        jQuery('#Right_Content').hide().html(html).fadeIn(1000); 
        afterFormLoad(); //Implement this function 
      } 

    }); 

    function afterFormLoad() { } //dummy function defined in the common code 

而在你的特定页面,

function afterFormLoad() { 
     //this is from page 1 
    } 

下面只是表明你对.live/.die.one柜面,如果你想了解如何使用.die来解除绑定。

您可以取消绑定.live使用.die点击处理程序中,

DEMO

$('form').live("click",function(e) { 
    alert('clicked'); 
    $('form').die('click'); // This removes the .live() functionality 
}); 

您可以使用.one如果你正在使用jQuery的1.7。请参见下面的代码,

DEMO

$(document).one('click', 'form', function() { 
    alert('clicked'); 
}); 
+0

那不是OP需要的 – Andre 2012-03-08 19:31:25

0

你可能要考虑的load()方法,该方法是一个方便的方法$就

http://api.jquery.com/load/

var data= "coll=App_Forms&form=Step_1_Company_Sign_Up" 
jQuery('#Right_Content').hide().load("../design_form.php", data,function(){ 
      /* this is the success callback of $.ajax*/      
      jQuery(this).fadeIn(1000); 
}); 
1

没有一个dom插入事件。

虽然,在JavaScript可以触发什么

success: function(html){     
    jQuery('#Right_Content').hide().html(html).fadeIn(1000) 
    .trigger('ajax-load'); 
} 

然后你就可以听使用

jQuery('#Right_Content').on('ajax-load', callback); 

手动触发事件可能会有所帮助用于几页时,但如果你需要它在整个应用程序中使用,你会更好地使用一个插件,如由奥斯卡·贾拉提供的

相关问题