JS 플러그인 시작 - 강조 플러그인

2897 단어
1. 플러그인 오염을 방지하기 위해 클립 영역을 정한다
//        
(function(){

})(window.jQuery)

2.jQuery.fn.extend(object) 확장 jquery 선택기 방법, 플러그인 만들기
//        
(function(){
  $.fn.extend({
    "highLight":function(optons){
        //todo  
    }  
  });
})(window.jQuery)

3. 플러그인 기본 매개 변수로 플러그인 기능 구현
//        
(function(){
  $.fn.extend({
    "highLight":function(options){
        //      
        var opts = $.extend({},defaults,options);
        //   this  jQuery  ,        dom,          
        this.each(function(){
          //    dom jQuery  ,   this      dom
          var $this = $(this);
          $this.css({backgroundColor: opts.background});
        });   
    }  
  });
  var defaults = {
    background: 'red'
  }
})(window.jQuery)

4. 플러그인 호출
$(function(){
  $("p").highLight();//          
})

여기는 직접 호출만 할 수 있고 체인식으로 호출할 수 없습니다.
5. 체인 호출 추가
//        
(function(){
  $.fn.extend({
    "highLight":function(options){
        //      
        var opts = $.extend({},defaults,options);
        //   this  jQuery  ,        dom,          
        this.each(function(){
          //    dom jQuery  ,   this      dom
          var $this = $(this);
          $this.css({backgroundColor: opts.background});
        });   
        return this;//  jQuery  
    }  
  });
  var defaults = {
    background: 'red'
  }
})(window.jQuery)

6. 플러그인 공유 방법과 개인 방법의 정의와 사용
//        
(function(){
  $.fn.extend({
    "highLight":function(options){
        //        
        if(!isValid(options)){
           return this;
        }
        //      
        var opts = $.extend({},defaults,options);
        //   this  jQuery  ,        dom,          
        this.each(function(){
          //    dom jQuery  ,   this      dom
          var $this = $(this);
          $this.css({backgroundColor: opts.background});
          //       
          var markup = $this.html();
          markup = $.fn.highLight.format(markup);
          $this.html(markup);
        });   
        return this;//  jQuery  
    }  
  });
  var defaults = {
    background: 'red'
  }
  //         .      ,                     。
  $.fn.highLight.format = function (str) {
      return "" + str + "";
  }
//    ,        
function isValid(options){
  return !options || (options && typeof options == "object")?true:false;
}
})(window.jQuery)

호출
//               
        $.fn.highLight.format = function (txt) {
            return "" + txt + ""
        }
        $(function () {
            $("p").highLight({ foreground: 'orange', background: '#ccc' }); //          
        });

좋은 웹페이지 즐겨찾기