2015-09-15 43 views
1

我想创建一个不需要DOM元素但有默认选项的插件。如何用选项创建jQuery插件但没有元素?

当我运行下面的代码时,我得到TypeError: $.myApp is not a function

我需要改变什么?

;(function ($, window, document, undefined) { 

    "use strict"; 

    var defaults = { 
     val: 'old value' 
    }; 

    function myApp (options) {  
     this.settings = $.extend({}, defaults, options); 
     this._defaults = defaults; 
     this.init(); 
    }; 

    $.extend(myApp .prototype, { 
     init: function() { 
      console.log (this.settings); 
     } 
    }); 
})(jQuery, window, document); 

$(function() { 
    $.myApp({ 
     val: 'new value' 
    }); 
}); 
+0

你可以试试这个http://jsfiddle.net/k7h90y9h/ – guvenckardas

+0

对不起,正确的链接是http://jsfiddle.net/k7h90y9h/2/ – guvenckardas

回答

0

你可以尝试像DEMO

(function ($) { 
     $.myApp = function(options){ 
      var defaults = { 
       'default'   : '' 
      }; 
      var options = jQuery.extend(defaults,options); 

      alert('worked!') 
     } 
    })($); 

$(function() { 

    $.myApp({ 
     val: 'new value' 
    }); 


}); 

答案是不喜欢你的功能,但它工作在正确的道路。

+0

'init'函数呢? –

+0

这个怎么样? http://jsfiddle.net/k7h90y9h/4/ – guvenckardas

0

这里是完整的教程,可以帮助你。

我们将从简单的插件开始。首先,我们需要为插件创建js文件。创建一个空白文件并将其保存为jquery.myFirstPlugin.js。将它包含在HTML文件末尾的HTML文件中,并且包括jquery-1.11.min.js作为其JQuery插件。

<script type="text/javascript" src="js/jquery-1.11.min.js"></script> 
<script type="text/javascript" src="js/jquery.myFirstPlugin.js"></script> 

默认结构

(function($) { 
    $.fn.myFirstPlugin = function() { 
     // your code here 
    } 
}(jQuery)); 

这里,包括在(function($){})自我封闭模式的一切,我们不希望任何冲突与其他JavaScript页面上的片段。 $.fn允许您定义函数,因为我们已将myFirstPlugin名称给我们的插件。我们会做功能里面的魔术。

设置默认值 如果没有什么文字初始化通过呢?显然,我们需要在我们的插件中设置默认设置。

(function($) { 
    $.fn.myFirstPlugin = function(options) { 

     // Default params 
     var params = $.extend({ 
      text  : 'Default Title', 
      fontsize : 10, 
     }, options); 
     return $(this).text(params.text); 

    } 
}(jQuery)); 

在这里,我们添加了名为params和设置使用extend功能选项默认值默认对象。因此,如果我们传递空白参数,那么它将设置默认值,否则它将设置。

$('.cls-title').myFirstPlugin({ text : 'Argument Title' }); 

原文出处

How to Create JQuery plugin

相关问题