2012-06-20 3 views
0

옵션을 사용하는 기본 플러그인을 만들고 다음 옵션을 사용하는 개체에서 메서드를 만들려고합니다.jQuery - 구성된 옵션을 사용하는 public 메서드 만들기

$.sn_Watermark = $.sn_Watermark || { 
     options: { 
      waterMarkText: "Watermark Text", 
      className: "watermarked" 
     }, 
     show: function(selector) { 
      $(selector) 
       .addClass("watermarked") 
       .val("Watermark Text"); 
     } 
    }; 

    $.fn.sn_Watermark = $.fn.sn_Watermark || function (options) { 
      if(options == null) 
       options = $.sn_Watermark.options; 
      else 
       options = $.extend($.sn_Watermark.options, options); 

      return this.each(function() { 
       $tb = $(this); 
        if ($tb.val() == "" || $tb.val() == options.waterMarkText) { 
         $tb.addClass(options.className); 
         $tb.val(options.waterMarkText); 
        } 
       }).focus(function() { 
        $tb = $(this); 
        if ($tb.val() == options.waterMarkText) { 
         $tb.val(""); 
         $tb.removeClass(options.className); 
        } 
       }).blur(function() { 
       //var clearLnk = "[LnkClearRowNum=" + $tb.attr('TextBoxRowNum') + "]"; 
       if ($tb.val() == '') { 
        // $(clearLnk).hide(); 
        $tb.addClass(options.className); 
        $tb.val(options.waterMarkText); 
       } 
       else if ($tb.val() == options.waterMarkText){ //if user types in water mark text 
        $tb.addClass(options.className); 
       } 
       else { 
        //$(clearLnk).show(); 
        $tb.removeClass(options.className); 
       } 
      }); 
     }; 

    $(document).ready(function() { 
     $("[TextBoxRowNum]").sn_Watermark({waterMarkText: "My Text"}); 
     $.sn_Watermark.show("[TextBoxRowNum]"); 
    }); 

그래서 show로 호출하면 "하드 코딩 된"기본값이 사용됩니다. 나는 이런 짓을하려고했지만 운이 없었다.

$.sn_Watermark = $.sn_Watermark || { 
     options: { 
      waterMarkText: "Watermark Text", 
      className: "watermarked" 
     }, 
     show: function(selector) { 
      $(selector) 
       .addClass(options.waterMarkTest) 
       .val(options.className); 
     } 
    }; 

제 질문은 show 메서드의 옵션을 쉽게 전달할 수 있습니까?

답변

0

확장을 통해 이러한 옵션을 적용하는 외부 메서드를 만들 필요가 없습니다.

플러그인 기능 내에 옵션을 넣고 확장하려고하는 이유는 무엇입니까?

0
$.sn_Watermark = $.sn_Watermark || { 
    options: { 
     waterMarkText: "Watermark Text", 
     className: "watermarked" 
    }, 
    show: function(selector) { 
     $(selector) 
      .addClass($.sn_Watermark.options.className) 
      .val($.sn_Watermark.options.waterMarkText); 
    } 
}; 

알 수 있습니다. 자기 자신이라고 부릅니다.

관련 문제