Javascript Jquery函数赢得';如果声明外部文件准备就绪,则无法工作
我们有一个简单的Jquery函数,它序列化表单的输入,并在Javascript Jquery函数赢得';如果声明外部文件准备就绪,则无法工作,javascript,jquery,function,scope,Javascript,Jquery,Function,Scope,我们有一个简单的Jquery函数,它序列化表单的输入,并在$(document.ready() 我们已多次使用此函数,并在提交表单时调用此函数: $(document).ready(function(){ $('#test').submit(function(){ var vars = $(this).serializeObject(); console.log(vars); return false; }); }); 这始终有效,但我们正在处理
$(document.ready()
我们已多次使用此函数,并在提交表单时调用此函数:
$(document).ready(function(){
$('#test').submit(function(){
var vars = $(this).serializeObject();
console.log(vars);
return false;
});
});
这始终有效,但我们正在处理一个新项目,并出现以下错误:
未捕获的TypeError:$(…)。serializeObject不是函数
这是一个
在新项目中,只有当serializeObject函数位于DocumentReady内部时,它才起作用
$(document).ready(function(){
(function( $ ){
$.fn.serializeObject = function() {
var formObj = {};
var a = this.serializeArray();
$.each(a, function() {
if (formObj[this.name] !== undefined) {
if (!formObj[this.name].push) {
formObj[this.name] = [formObj[this.name]];
}
formObj[this.name].push(this.value || '');
} else {
formObj[this.name] = this.value || '';
}
});
return formObj;
};
})( jQuery );
$('#test').submit(function(){
var vars = $(this).serializeObject();
console.log(vars);
return false;
});
});
我们使用的是同一版本的Jquery,没有其他外部库。
有什么想法吗?感谢您不止一次地包含jQuery,下面是所发生的事情。这也可以“删除”插件
JSFIDLE在有或没有document.ready的情况下都适用于我。你能展示一个实际复制了这个问题的演示吗?你确定jQuery没有多次出现在页面上吗?@JasonP你是个天才,我们在代码下面找到了另一个jQuery。谢谢把它作为答案加起来,这样我就可以投票了。谢谢
$(document).ready(function(){
(function( $ ){
$.fn.serializeObject = function() {
var formObj = {};
var a = this.serializeArray();
$.each(a, function() {
if (formObj[this.name] !== undefined) {
if (!formObj[this.name].push) {
formObj[this.name] = [formObj[this.name]];
}
formObj[this.name].push(this.value || '');
} else {
formObj[this.name] = this.value || '';
}
});
return formObj;
};
})( jQuery );
$('#test').submit(function(){
var vars = $(this).serializeObject();
console.log(vars);
return false;
});
});