2010-08-02 5 views
0

jQuery 플러그인에서 작업 중이며 기본 설정을 덮어 쓸 수없는 것 같습니다. 플러그인의 스 니펫입니다.jQuery 플러그인이 기본값을 덮어 쓰지 않습니다.

 $.Auction = { 

     defaults: { 
      parentId: '#span', 
      bidButtonClassName: '.live_bid' 
     } 
    }; 


    $.setAuction = function(options){ 

     startAuction(); 

    } 

    function startAuction(){ 

      var options = $.extend({}, $.Auction.defaults, options); 
      alert(options.parentId); 

    } 



    $.setAuction({parentId: '#div'}); 

기본적으로 하단의 parentId 값을 무시하려고 시도하지만 항상 #span 값을 경고합니다. 내가 뭘 잘못하고 있는거야? 감사!

답변

1

$.setAction에 대한 인수로 {parentId: '#div'}을 인수로 전달하고 있지만 실제로 사용하지는 않습니다.

$.setAuction = function(options){ 
    startAction(options); 
} 

function startAction(options){ 
     options = $.extend({}, $.Auction.defaults, options); 
     alert(options.parentId); 
} 

편집 : 당신은 다음과 같이 수행 할 @TmEllis이 기능을 구현하는 더 좋은 방법을 제안을하지만, 자신이 사용자 정의 기본값을함으로써 여전히 더 나은 만들 수 있습니다 :

(function($) 
{ 
    $.fn.setAuction = function(options) 
    { 
     options = $.extend({}, $.fn.setAuction.defaults, options); 
     return this.each(function() 
     { 
      alert($(this).id); 
     }); 
    }; 

    $.fn.setAuction.defaults = 
    { 
     bidButtonClassName: '.live_bid' 
    }; 
})(jQuery); 

좋은 jQuery 플러그인을 작성하는 방법에 대한 자세한 설명은 this article을 참조하십시오.

+0

Ahh .. 그래,이 시도했지만 setAuction ({}) 내에서 parentId 정의하지 않으면 정의되지 않은 온다. – dzm

+0

@Dave : 더 구체적인 정보 없이는 정말 도움이되지 않습니다. 그것은 나를 위해 잘 작동합니다. –

1

코드를 약간 변경해야한다고 생각합니다.

$.fn.setAuction 것보다 더 잘 $.setAuction (그들은 이렇게 다른 두 가지) 당신이 할 수 있기 때문에

:

$("#span").setAuction ({bidButtonClassName:"classname"}); 

아니라 플러그인 옵션으로 선택기로에 요소를 통과 (그것을하지 않는 한) 옵션에 있어야

귀하의 플러그인 코드는 다음과 같을 수 있습니다

(function($) { 

    $.fn.setAuction = function(options) { 
     var defaults = { 
      bidButtonClassName: '.live_bid' 
     }; 


     var options = $.extend(defaults, options); 
     //or to preserve defaults 
     var options = $.extend({}, defaults, options); 

     return this.each(function() { 
      obj = $(this); //"#span" 
      alert(obj.id); 


     }); 
    }; 
})(jQuery); 
+0

+1 더 관용적 인 접근법. –

관련 문제