2009-12-23 51 views
1

我試圖做一個插件,正在到一些問題:jQuery插件範圍問題(關閉)

(function($){ 
    var users = {}; 

    $.fn.plugin = function(){ 
     //blah, but alters users 
    } 
    $.fn.utility_function = function(){ 
     // uses users 
    } 
}); 

發生的事情是,當我運行該插件的兩個實例,「用戶」結束了對於插件的每個實例具有相同的值。我如何讓它們獨一無二?

回答

2

這完全正常,因爲您的用戶對象超出了插件的範圍。

我建議你保存價值爲()連接到受影響的插件

看到this article您的DOM元素的jQuery方法的部分數據。

0

如果你想要獨特的對象,你可以使用jQuery的extend方法構建一個對象的深層副本。

在你的情況,你會怎麼做:

(function($){ 
    var users = {}; 

    $.fn.plugin = function(){ 
     var myUsers = $.extend({}, users); 
     //blah, but alters users 
     // BUT should now use myUsers instead 
    } 
    $.fn.utility_function = function(){ 
     // uses users 
    } 
}); 

但我不知道你想要的用戶的唯一拷貝對象,因爲他們可能是一組大概唯一的全球變化。