这样就可以这样显示或隐藏:
$(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**
}
});
}
答案 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()可能就是你要找的东西。它将在隐藏和显示之间切换元素(取决于它当前处于什么状态)。