2013-07-11 3 views
4

작은 스크롤바 jQuery 플러그인을 만들었습니다. 그것은 꽤 표준 구현을 가지고 : $(selector).drollScroll({options});, 기본값으로 완료. 트릭은 사용자가 이러한 기본값을 미리 설정할 수 있기를 바랍니다. 따라서 더 큰 사이트 (큰 사이트의 경우이를 개발 중입니다)의 사용자는 매번 매개 변수를 지정하지 않고도 동일한 스크롤바를 쉽게 얻을 수 있습니다 .

나는 그렇게 $.drollScrollDefaults({options}) 같은 것을 통해, 사용자가 처음으로 jQuery를 개체를 인스턴스화하지 않고이 작업을 수행 할 수 있도록 좋아 정말 을 것입니다.

지금까지 나는이 있습니다

(function($) 
{ 
    var defaults = { 
     content    : ".drollScrollBowl", 
     scrollBoxClassName  : "drollScrollShoal", 
     scrollbarClassName  : "drollScrollPole", 
     thumbClassName   : "drollScrollTrollThumb", 
     scrollbarOpacity  : 1, 
     scrollbarFadeTime  : 300, 
     scrollbarTimeToLive : 1000, 
     alwaysVisible   : true, 
     autoFade    : false, 
     overrideBoxStyling  : false, 
     overrideBarStyling  : false, 
     overrideThumbStyling : false, 
     scrollWidthConstant : false 
    }; 

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

    $.fn.drollScroll = function(options) 
    { 
     var opts; 

     return this.each(function() 
     { 
      // we want opts to be its own object in case someone edits it later 
      opts = $.extend({}, defaults, options); 

      $(this).data("drollScroll", {options : opts}); 
     }); 
    }; 
})(jQuery); 

이제이 실제로 작동하지만 라인

$.drollScrollDefaults = function(options) 
(독서의 즐거움 만 필수로 몸매는 여전 하구나)

심각하게 어떻게 수행 할 수 없습니다. 해킹 된 것으로 느껴집니다. 나는 틀린 일을해야 할 것처럼 느껴진다. 나는 $ 나 뭔가의 프로토 타입을 사용해야한다. 이것은이입니까? 이미 맞습니까? 무엇 이것을 달성하는 가장 좋은 방법은 무엇입니까? 나는 이것을해야 할까?

+2

'$'는 전역 범위의'window' 객체에있는'jQuery'의 별명입니다. 그러므로'$ .myFunction'을 설정하는 것은'$ [ 'myFunction']'과 다를 바 없으며 Javascript 객체의 속성을 설정하는 것과 다르지 않습니다. – crush

+0

방금 ​​더 조직적이어야한다고 생각했습니다. 어쩌면 나는 프로토 타입이 Javascript에서 어떻게 작동하는지 이해하려고 노력하면서 좀 더 많은 시간을 할애하여 내가 필요하지 않을 때 자신을 안심시키는 데 도움이 될지도 모른다. 감사! –

답변

4

아무 문제가 없지만 window.number_format (내 자신의 툴킷을 빌드)과 같은 전역 기능을 할당하는 것보다 나쁘지 않습니다. 사용자가 $.drollScrollDefaults에 전화를 걸 수 있기를 원하면이 번호를 지정해야합니다.

1

나는 보통 예를 들어, 함수를 정의

$.fn.myplugin = function() { ... your plugin here ... }; 
$.fn.myplugin.defaults = { ... defaults here ...}; 

주로 내 플러그인의 대부분은 $.fn.myplugin.defaults

밖에 $.myplugin 및 플러그인 내 $().myplugin()

액세스를하고 모두를 호출 할 수 있기 때문에

+0

이 질문에 어떻게 대답하는지 모르겠습니다 ... –

+1

사용자가 질문에서 직접 묻는 것처럼 jQuery 객체를 초기화하지 않고 기본값을 설정할 수 있습니다. 기본적으로 동일한 네임 스페이스를 사용하지 않고 별도의 네임 스페이스로 정의하는 것과 같습니다. –

+0

jQuery UI 위젯의 기본값을 설정할 때 사용하는 것과 동일한 개념입니다. '$ .ui.mywidget.prototype.options'를 오버라이드/확장합니다. –

관련 문제