Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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 - Fatal编程技术网

Javascript jQuery单例

Javascript jQuery单例,javascript,jquery,Javascript,Jquery,我有一个类似于test.js的文件: (function($){ $.test= function(){ alert('test'); } })(jQuery); jQuery.test(); 现在,如果test.js在我的页面中加载两次,即src=test.js在两个不同的位置,它会发出两次警报。我希望它像单身汉一样。关于如何实现这一点有什么想法吗?你有没有尝试过类似的方法 if(typeof $.test == "undefined") { (functi

我有一个类似于test.js的文件:

(function($){    
$.test= function(){ 
    alert('test');
    }
 })(jQuery);
 jQuery.test();

现在,如果test.js在我的页面中加载两次,即src=test.js在两个不同的位置,它会发出两次警报。我希望它像单身汉一样。关于如何实现这一点有什么想法吗?

你有没有尝试过类似的方法

if(typeof $.test == "undefined") {
  (function($){    
    $.test= function(){ 
      alert('test');
    }
  })(jQuery);
  jQuery.test();
}

为什么不将此共享代码提取到第三个文件中?


除此之外,这取决于代码的功能。通常,您可以将整个函数包装在一个条件中,仅在“尚未执行冲突的事情时”执行。

使用条件快捷方式:

(function($){    
    !$.test && $.test= function(){ 
        alert('test');
    }
})(jQuery);

jQuery.test();
!$.test
的计算结果为
true
,如果未定义
$.test
,并且执行
&
后右侧的代码。否则,它将跳过该部分。另一个有用的模式可能如下所示:

$.test = $.test || function() {
     alert('test');
}

实际上,这也是一样的。如果已经定义了
$.test
,则将匿名函数分配给
$.test
。两个版本都可以(而且可能应该)进行优化,但不仅要检查它们是否已定义,还要检查它们是否来自类型
函数

。不清楚您是否正在尝试避免调用两次测试或定义两次测试。如果这是一个愚蠢的问题,请更正我,但为什么需要多次加载文件?为什么不将函数存储在变量中并在文档中需要时调用它?@squegy我调用并定义了两次测试。我只希望这样做一次。@helixed问题是有些用户两次包含JS文件,这会导致问题。我正在尝试解决这个问题。我所说的用户是指站点所有者。
$.test = $.test || function() {
     alert('test');
}