2012-12-28 3 views
0

나는 init, close, open 함수가있는 간단한 플러그인을 가지고있다. 이 플러그인을 호출하는 html 템플릿 배열이 있습니다. 특정 템플릿에 대해서만이 플러그인과 약간 다른 동작을하고 싶습니다. 열린 함수에 다른 클래스를 추가하고 닫으면 같은 클래스를 제거 할 수 있습니다. 그것을하는 우아한 방법은 무엇입니까? html의 ID를 찾아서 같은 플러그인 내에서 열고 닫는 함수 내에서 else를해야합니까 아니면 더 좋은 방법이 있을까요?약간 다른 동작으로 플러그인을 호출하는 방법은 무엇입니까?

;(function ($, window, document, undefined) { 

    function Plugin(element, options) { 
      Window = this; 
      this.element = element; 
      this._name = pluginName; 
      this.init(element); 
     } 

    Plugin.prototype = { 
      init: function(element) { 
    }, 
    close:function(e){ 
    //removes a class and hides the element 
    }, 
    open:function(element){ 
    //adds a class and shows the element 
    } 

    } 
//Extend Global jQuery (where we actually add the plugin!) 
    $.fn[pluginName] = function (options) { 
     plugin = $.data(window, 'plugin_' + pluginName); 
     if (!(plugin instanceof Plugin)) { 
      $.data(window, 'plugin_' + pluginName, 
      plugin = new Plugin(this, options)); 
     } 
     return $Extend(this).each(function() { 
      $.data(this, 'plugin_' + pluginName, plugin); 
     }); 
    }; 

}(jQuery, window, document)); 

답변

0

난 당신이 플러그인에 통과하여 options PARAM에 추가 옵션 객체에 의해 초기화 설정을 처리 할 것입니다.

본질적으로, 단지 options PARAM 관련된 모든 초기화 방법에 액세스 할 수 있는지 확인 한 후 다음과 같이 수행

open: function(element){ 
var initClass = options.initClass || "DEFAULTVALUE"; 
//adds "initClass" as a class and show the element 
} 

을 || "options.initClass"가 존재하지 않는다면, 다음 값을 기본값으로 사용하는 속기 트릭입니다. 당신은 || here.

+0

또는 대부분의 jQuery 플러그인에서 사용되는'extend()'관용구를 사용하여 사용자 옵션을 기본 옵션 오브젝트로 병합하십시오. – Barmar

+0

당신이해야 할 다른 일은 각 요소에 사용 된 옵션을 기억하는 것입니다. 이것은'data()'를 사용하여 수행 할 수 있습니다. – Barmar

+0

@Barmar 두 가지 좋은 포인터. – adamb

0

당신은 옵션을 설정 한 경우 : 당신은 당신이 할 수있는 플러그인의 인스턴스를 만들 때마다

function MyPlugin(options){ 
    options = $.extend({}, MyPlugin.options, options); 

    options.add(); 
} 

: 당신이 당신의 플러그인에 옵션을 전달하는 경우

MyPlugin.options = { 
    width: 200, 
    height: 500, 
    add: function() { 
     alert("add was called"); 
    }, 
    delete: function() { 
     alert("delete was called"); 
    } 
}; 

당신이 기본값을 무시할 수를 옵션을 설정하여 하나 이상의 속성을 덮어 씁니다.

var plugin = new MyPlugin({ 
    width: 100, 
    add: function() { 
     alert("My add was called!"); 
    } 
}); 

이전 대구 e, "My add was called!"라는 경고가 표시됩니다.

관련 문제