Jquery Live Load - 通过ajax加载表单

时间:2012-03-08 19:21:28

标签: javascript jquery

我只是想在通过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调用的成功部分中,但我正在尝试最小化代码并重新使用其他代码,所以我真的想使用实时功能。

我正在通过ajax加载表单,当加载该表单时,我想使用jquery live触发一个函数。当我将其设置为“单击”时,这可以正常工作

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

但是没有必要在每次单击时运行此函数,我只需要在表单加载上运行一次,这就是为什么我想使用加载监听器而不是单击。

谢谢。

4 个答案:

答案 0 :(得分:1)

使用jquery live不会触发'load',请尝试阅读API文档。 http://api.jquery.com/live/

另一方面,您可以使用名为“livequery”的插件并调用以下内容:

$(selector).livequery(function(){ 

}); 

正如您所看到的那样,该插件中没有“click”而不是jQuery live。

希望这会有所帮助: - )

答案 1 :(得分:1)

没有dom插件事件。

虽然在javascript中你可以触发任何

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

然后您可以使用

收听活动
jQuery('#Right_Content').on('ajax-load', callback);

手动触发事件可能有助于在几页中使用,但如果您需要在整个应用程序中使用它,您最好使用Oscar Jara提供的插件

答案 2 :(得分: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
});

如果您使用 jQuery 1.7 ,则可以使用.one。见下面的代码,

DEMO

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

答案 3 :(得分:0)

您可能需要考虑load()方法,它是$ .ajax

的便捷方法

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);
});