【问题标题】:Jquery Live Load - Load form via ajaxJquery Live Load - 通过 ajax 加载表单
【发布时间】:2020-08-24 22:16:59
【问题描述】:

我只是想在通过 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() {...} 

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

谢谢。

【问题讨论】:

  • 在 .live 中调用 .die ,这样执行一次后就会解除绑定。如果您使用的是 jQuery 1.7,则应该使用 .on。
  • 直播没有“加载”功能,唯一的办法就是通过成功回调。
  • 你能回答下面“答案”空间中的问题吗?这样我可以给你一个绿色的复选标记。此外,如果你能提供一个我应该把 .die 放在哪里的例子,我将非常感激。谢谢。

标签: javascript jquery


【解决方案1】:

编辑:我认为您希望在成功回调中包含自定义代码,这些代码将用于不同的页面,因此您不希望在不同的页面中重复相同的 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
    }

如果您想了解如何使用.die 解除绑定,下面仅向您展示.live/.die.one

您可以使用.die 在点击处理程序中解除.live 的绑定,

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

【讨论】:

  • 我已经发布了一个与之相关的quesiton,您可以查看一下吗?
【解决方案2】:

没有 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 提供的插件

【讨论】:

  • 我已经发布了一个与之相关的quesiton,您可以查看一下吗?
【解决方案3】:

没有load可以用jQuery live触发,尝试阅读API文档:http://api.jquery.com/live/

另一方面,您可以使用名为 livequery 的插件并执行以下操作:

$(selector).livequery(function() { 
 
}); 

作为参考:

【讨论】:

  • 我已经发布了一个与之相关的quesiton,您可以查看一下吗?
【解决方案4】:

您可能需要考虑 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);
});

【讨论】:

  • 我已经发布了一个相关的quesiton,您可以查看一下吗?
猜你喜欢
  • 1970-01-01
  • 2010-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-17
  • 1970-01-01
  • 2013-11-24
相关资源
最近更新 更多