我有類似的文件說test.js:jQuery的辛格爾頓
(function($){
$.test= function(){
alert('test');
}
})(jQuery);
jQuery.test();
現在,如果test.js在我的網頁即SRC在兩個不同的位置= test.js加載兩次,它給了兩次警報。我希望它像一個單身人士。任何想法如何實現這一目標?
我有類似的文件說test.js:jQuery的辛格爾頓
(function($){
$.test= function(){
alert('test');
}
})(jQuery);
jQuery.test();
現在,如果test.js在我的網頁即SRC在兩個不同的位置= test.js加載兩次,它給了兩次警報。我希望它像一個單身人士。任何想法如何實現這一目標?
使用條件的快捷方式。和&&
後的rightside的代碼被執行,否則,它會直接跳過的一部分,另一個有用的模式可能看起來像:。
$.test = $.test || function() {
alert('test');
}
這確實的實際上同樣的事情如果$.test
已被定義其使用,否則將匿名功能分配給$.test
。兩種版本都可以(也可能應該)進行優化,但不僅僅是檢查它們是否已定義,還包括是否來自function
。
你試過類似的東西嗎?
if(typeof $.test == "undefined") {
(function($){
$.test= function(){
alert('test');
}
})(jQuery);
jQuery.test();
}
(function($){
$.test = function() {
if (!$.test.hasBeenRun) {
$.test.hasBeenRun = true;
alert('test');
}
}
$.test.hasBeenRun = false;
})(jQuery);
jQuery.test();
你爲什麼不提取此共享代碼到第三個文件?
除此之外,它取決於代碼的作用。如果沒有定義$.test
(function($){
!$.test && $.test= function(){
alert('test');
}
})(jQuery);
jQuery.test();
!$.test
計算爲true
:一般來說,你可以換全功能的條件下,只有實行「如果有衝突的事情尚未進行
如果您嘗試避免兩次_calling_測試或_defining_測試兩次,有點不清楚。 – 2011-02-14 08:21:39