如何使用此功能实现jQuery插件?

时间:2010-01-15 08:10:52

标签: jquery jquery-plugins

这样就可以这样显示或隐藏:

$(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 个答案:

答案 0 :(得分:2)

您可以使用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 for jQuery,它使用data模式将对象与DOM元素相关联。

答案 1 :(得分:-1)

.toggle()可能就是你要找的东西。它将在隐藏和显示之间切换元素(取决于它当前处于什么状态)。