2011-09-08 4 views
1

jQuery를 처음 사용했습니다. 플러그인을 만들려고했지만 작동하지 않았습니다. 왜? 여기 jQuery 플러그인 기본 프레임

내가 무엇을 가지고 :

<head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    <script type="text/javascript"> 
    (function($){ 
     $.alert = function(settings){ 
     var config = { 
      // settings 
      'text': "old text", 
      'smily': ":(", 
      // ... 
     }; 
     if (settings){$.extend(config, settings);} 
     // variables 
     var i = 0; 
     // script 
     alert(config.text + " " + config.smily); 
    }; 
    </script>  
</head> 

<body> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $.alert(text: "new text", smily: ";)"); 
}); 
</script> 
</body> 

답변

0

$.extend 반환 값을 할당 (similar question)

이 같은

그리고 전화 :

$(document).ready(function() { 
    $.alert({ text: "new text", smily: ";)" }); 
}); 

는 또한 작업 데모의 마지막 기본값 'smily': ":(",

Click here에서 혼수를 제거합니다.

+0

시도해 보았지만 작동하지 않습니다. [link] (http://jsbin.com/eveduc/2/edit#html, live) – fteinz

+0

작업 데모로 편집, – AlexBay

+0

데모가 당신을 위해 괜찮은지 확인 했습니까? – AlexBay

0

짧은 데모 :

(function($){ 
$.fn.pluginas = function(options) { 
    var defaults = { 
    width: 300, 
    param: "Par", 
    param2: "Par2", 
    }; 
    var options = $.extend(defaults, options); 
    return this.each(function() { 
    }); 
}; 
})(jQuery); 

어떻게해야 :

(function($){ 

$.alert = function(settings){ 
    var config = { 
    // settings 
     text: "old text", 
     smily: ":(", 
    // ... 
    }; 

    if (settings){$.extend(config, settings);} 
    // variables 
    var i = 0; 

    // script 
    alert(config.text + " " + config.smily); 
} 
})(jQuery); 
+1

'smily ': ":(",''되어야한다 'smily': ":("와'param2 : "Par2",''param2 : "Par2"가되어야합니다. –

+0

시도해 보았지만 작동하지 않습니다. [jsbin에서보기] (http://jsbin.com/oyopam/edit # html, live) – fteinz

0

당신이하려는 의도는 무엇인지 모르겠지만 플러그인이 작동하는 것 같습니다. 당신은 바로 그것을 호출하지 않는 : 플러그인을 개발할 때 $.alert(text: "new text", smily: ";)");$.alert({text: "new text", smily: ""});

을 시도 대신에, 그것은 (예 : 표준 http://docs.jquery.com/Plugins/Authoring에서 볼 수 있습니다) 몇 가지 기준을 유지하는 좋은 일입니다.
몇 가지 플러그인을 작성 후, 나는 표준을 따르도록 결정 내 모든 미래 플러그인의 기초해야 플러그인 템플릿 개발 :

/** 
*  PLUGIN NAME : 
*  VERSION  : 
*  AUTHOR  : yourname (yourname [at] domain [dot] com) 
*  DESC  : 
*  USAGE  : 
**/ 
(function($,window,undefined){ 
    $.fn.pluginName = function(o){ 
     // some globals 
     var options = $.extend({},$.fn.pluginName.defaults,o); 

     // constructor 
     function pluginName(el,o){ 
      var api = this, 
       $el = $(el); 

      //internal api 
      function _initialise(options){ 

      } 

      function _destroy(){ 

      } 

      // external api 
      $.extend(api,{ 
       initialise : function(){ 
        _initialise.apply(api,arguments); 
        return api; 
       }, 
       destroy : function(){ 
        _destroy.apply(api,arguments); 
        return api; 
       }, 
       reinitialise : function(){ 
        return 
         api 
          .destroy() 
          .initialise.apply(api,arguments); 
       }, 
      }); 
      // initialise 
      _initialise(o); 
     } 

     return $(this).each(function(){ 
      var that = $(this), 
       api = that.data('pluginNameApi'); 
      if(api instanceof pluginName) 
       api.reinitialise(options); 
      else 
       that.data('pluginNameApi',new pluginName(that.get(0),options)); 
     }); 
    } 

    $.fn.pluginName.defaults = { 

    } 
    $.fn.pluginName.version = 1.0; 
})(jQuery,window); 
+0

하지만이 변경만으로는 작동하지 않습니다! – fteinz