我只是想在通过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() {...}
但是没有必要在每次单击时运行此函数,我只需要在表单加载上运行一次,这就是为什么我想使用加载监听器而不是单击。
谢谢。
答案 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
$('form').live("click",function(e) {
alert('clicked');
$('form').die('click'); // This removes the .live() functionality
});
如果您使用 jQuery 1.7 ,则可以使用.one
。见下面的代码,
$(document).one('click', 'form', function() {
alert('clicked');
});
答案 3 :(得分:0)
您可能需要考虑load()方法,它是$ .ajax
的便捷方法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);
});