5

我有一个乍一看似乎很愚蠢的问题。我在弄清楚它时遇到了问题,每当我使用它时,什么都没有发生。我有一个自己编写的jQuery插件,如下所示:

(function(){
$.fn.myPlugin = function(options){
var options = $.extend({
firstParameter : null;
}
// the rest of the plugin
})(jQuery)

但是当我从 HTML 文件中调用它时,像这样:("#object").myPlugin(2);,它无法工作(注意我传递的参数)。但是,如果我跳过参数并像这样调用它:("#object").myPlugin();,一切正常。问题是什么?

提前致谢

4

2 回答 2

30

你要这个:

(function($) {
    $.fn.extend({
        myPlugin: function(options) {
            var defaults = {
                something: 23,
                otherThing: 'hello'
            };

            options = $.extend(defaults, options);

            console.log(options.something);
            console.log(options.otherThing);
        }
    });
})(jQuery);

现在这应该可以覆盖该something选项(不要忘记传递一个对象):

$('#object').myPlugin({something: 17});
于 2013-06-16T04:38:23.620 回答
0

您定义一个没有参数 function() {} 的函数,然后将 jQuery 传递给它。这可能是问题的原因。

(function(){
  // nothing is the $ here
  $.fn.myPlugin = function(options){
    var options = $.extend({
     firstParameter : null;
    }
  // the rest of the plugin
 })(jQuery)

你应该改为

(function($) {})(jQuery) 

我认为它会起作用。希望这有帮助

于 2013-06-16T04:35:33.793 回答