我正在使用jQuery的实时查询插件来附加动态行为以形成元素并创建ajax表单。我面临的问题如下:
在提交的响应中,如果我不再对元素调用livequery,则新加载的表单不会获得所需的行为。但是,如果我再次使用提交调用livequery,则表单将被提交多次。
实际上,计数每次都在增加。我试过使用expire。但这根本没有帮助。关于如何实现这一点的任何意见。
我要做的是使用类js-ajax-form创建所有表单作为通过ajax提交的表单。结果内容也是一种应该保持相同行为的形式。那就是必须通过ajax提交。
非常感谢您的指导。
$.fn.fajaxform = function() {
var container = null;
$(this).livequery(
'submit',
function(e) {
var $this = $(this);
container = $this.parent();
$this.ajaxSubmit({
beforeSubmit : function(formData, jqForm, options) {
$('input:file', jqForm[0]).each(function(i) {
if ($('input:file', jqForm[0]).eq(i).val()) {
options['extraData'] = {
'is_iframe_submit' : 1
};
}
});
container.block({
message : '<h1><img src="/img/busy.gif" /> Loading please wait...</h1>'
});
},
success : function(responseText, statusText) {
redirect = responseText.split('*');
if (redirect[0] == 'redirect') {
location.href = redirect[1];
} else if ($this.metadata().container) {
$('.' + $this.metadata().container).html(
responseText);
} else {
$this.parents('div.js-responses').eq(0).html(
responseText);
}
$('.js-ajax-form').each(
function()
{
if (this.expire)
{
this.expire();
}
}
);
$('.js-ajax-form').fajaxform();
container.unblock();
}
});
return false;
});
};
答案 0 :(得分:0)
这里只是从臀部拍摄:剧本是否包含了一次?我遇到了多次意外加载相同脚本的问题(使用requireJS),事件发生的时间超过了一次。
答案 1 :(得分:0)
升级到最新版本的jQuery之后问题就解决了。我认为,.live可能是一个更好的选择,因为livequery不再处于积极开发阶段。