Как реализовать плагин jQuery с этой функцией? - PullRequest
3 голосов
/ 15 января 2010

Чтобы его можно было показать или скрыть следующим образом:

$(selector).pluginName('show')
$(selector).pluginName('hide')

Проблема в том, как узнать , какой показать или скрыть?

Сейчас я делаю это так:

$.fn.pluginName = function(opts) {  
    var conf = $.extend({},opts);
    return this.each(function() { 
        if(conf && 'conf' == conf.type)
        {
            //ClassName is defined elsewhere
            new ClassName(conf,$(this));
        }
        else
        {
            //**show or hide corresponding instance**
        }
    });
}

Ответы [ 2 ]

2 голосов
/ 15 января 2010

Вы можете использовать data, чтобы связать ваш объект с элементом DOM, которому он принадлежит:

$.fn.pluginName = function(opts) {
  if(typeof(opts) == "string"){
    this.each(function(){
      // Get the associated obj
      var obj = $(this).data('ClassName');
      if(obj){
        if(opts == "show") obj.myShowMethod();
        else if (opts == "hide") obj.myHideMethod();
      }
    })
  } else {
    var conf = $.extend({},opts);  
    this.each(function() { 
      var obj = new ClassName(conf,$(this));
      // Associate your object with this DOM element
      $(this).data('ClassName', obj);
    });
  }
  return this; // Don't break the chain
}

Также посмотрите, Starter для jQuery , который использует шаблон data для связи объекта с элементом DOM.

0 голосов
/ 15 января 2010

.toggle () , вероятно, то, что вы ищете. Он переключит элемент между скрытым и показанным (в зависимости от того, в каком состоянии он находится в данный момент).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...