2009-12-23 3 views
1

Я пытаюсь сделать плагин, и я бегу в некоторых проблем:Jquery плагин сфера вопрос (закрытия)

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

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

Что происходит в том, что когда я запускаю два экземпляра этого плагина, «пользователи» заканчивается имеющих одинаковое значение для каждого экземпляра плагина. Как сделать их уникальными?

ответ

2

Это абсолютно нормально, потому что объект ваших пользователей живет за пределами ваших плагинов.

Я предлагаю вам сохранить значение как часть данных() метод JQuery прикрепленных к вашему йоту элементу затрагиваемого плагин

см this article.

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 
    } 
}); 

Но я не уверен, что вы хотите уникальные копии пользователей объекта, так как они, вероятно, представляют собой единый набор, который, вероятно, только изменения в глобальном масштабе.

Смежные вопросы