2012-03-31 4 views
0

Я пытаюсь разработать компонент jquery для модальных модалов, и я не знаю, как получить доступ к настройкам из всех функций компонента. Мне нужно получить доступ к settings.zIndex из открытой функции и, похоже, не работает.Настройки доступа из всего компонента jquery

(function($) { 

    var methods = { 

     init: function(options) { 

      var defaults = { 
       bgClass: "fancy-dialog-bg", 
       bgShow: null, 
       zIndex: 100, 
       show: null 
      }; 
      var settings = $.extend(defaults, options); 

      return this.each(function() { 
       var obj = $(this).hide().css("position", "fixed").css("z-index", settings.zIndex).css("left", "300px").css("top", "200px"); 
      }); 

     }, 

     open: function() { 
        // alert(settings.zIndex); not working 
      var tes = $("<div></div>").css("backgroundColor", "#f00").css("position", "fixed").css("z-index", "99").css("width", "50%").css("height", "100%").css("left", "0").css("top", "0"); 
      $('body').append(tes); 
      var obj = $(this); 
      obj.show(); 

     }, 

     close: function() { 

      var obj = $(this); 
      $("#fancy-dialog-bg-" + obj.attr('id')).remove(); 
      obj.hide(); 

     } 

    }; 

    $.fn.fancyDialog = function(method) { 

     if (methods[method]) { 
      return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 
     } 
     else if (typeof method === 'object' || !method) { 
      return methods.init.apply(this, arguments); 
     } 
     else { 
      $.error('Method ' + method + ' does not exist.'); 
     } 

    }; 

})(jQuery); 

ответ

0

Изменить эту строку:

var settings = $.extend(defaults, options); 

к этому:

this.settings = $.extend(defaults, options); 

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

methods.settings 
+0

hmm похоже не работает :( –

+0

Да, это из-за того, как вы отправляете методы. Вы вызываете методы с 'this' как объект jQuery, а не объект' methods', где хранятся настройки. Итак, если вы не передаете объект 'methods' каким-либо образом, и там, где хранятся настройки, bingo вы не можете получить к ним доступ. Я должен запустить этот момент. Вам нужно будет изменить дизайн способов вызова методов или способов сохранения настроек. – jfriend00

+0

хорошо я скопировал этот шаблон с jquery.com .. im все еще новичок в создании компонента :) вы случайно знаете хороший шаблон для создания компонентов, таких как тот, который я пытаюсь разработать? ty –

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