我正在尝试使用模块化模式创建一个jQuery插件,因此我可以将它与requirejs一起使用。我期待下面的代码表现一种方式而不是。我希望,如果有人能向我解释为什么它没有回归我认为它应该帮助我理解。这是代码:
{
"test": "test2"
}
现在有了上述内容,我期待这会记录“嘿”
define(['jquery'], function($){
'use strict';
var pluginName = "myPluginName";
var Plugin = function( element, options ) {
var _init = function() {
console.log("hey");
}
return {
init: _init;
}
}
$.fn[pluginName] = function ( options ) {
return this.each(function () {
if (!$.data(this, "plugin_" + pluginName)) {
$.data(this, "plugin_" + pluginName,
new Plugin( this, options ));
}
});
};});
任何解释都将不胜感激。感谢。
答案 0 :(得分:1)
$('#elemId').myPluginName()
返回一个jQuery对象。
要执行init(),您必须访问数据属性
中的Plugin对象$('#elemId').myPluginName().data('plugin_myPluginName')
这将返回可以执行的对象init: () {}
$('#elemId').myPluginName().data('plugin_myPluginName').init()
var pluginName = "myPluginName";
var Plugin = function( element, options ) {
var _init = function() {
console.log("hey");
}
return {
init: _init
}
}
$.fn[pluginName] = function ( options ) {
return this.each(function () {
if (!$.data(this, "plugin_" + pluginName)) {
$.data(this, "plugin_" + pluginName,
new Plugin( this, options ));
}
});
};
console.log($('body').myPluginName().data('plugin_myPluginName'));

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;