Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery函数赢得';如果声明外部文件准备就绪,则无法工作_Javascript_Jquery_Function_Scope - Fatal编程技术网

Javascript 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; }); }); 这始终有效,但我们正在处理

我们有一个简单的Jquery函数,它序列化表单的输入,并在
$(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,下面是所发生的事情。这也可以“删除”插件

  • 您包括jQuery
  • 定义函数并将其附加到jQuery函数/对象
  • 再次包含jQuery。这个新的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;
      });
    
    });