【发布时间】:2014-10-10 04:04:00
【问题描述】:
我正在使用 jQuery 构建一个小插件,但我希望它能够将它的一些数据公开为公共属性。例如:
$(function () {
$("#example1").myPlugin({
exampleData: 'bar'
});
$("#example2").myPlugin({
exampleData: 'foo'
});
$("#example3").myPlugin({
exampleData: 'too'
});
$('.click').click(function () {
console.log($("#example1").myPlugin('getData'));
console.log($("#example2").myPlugin('getData'));
console.log($("#example3").myPlugin('getData'));
});
});
我希望控制台上的结果是:
'bar'
'foo'
'too'
我尝试使用以下代码来完成此操作:
(function ($) {
$.myPlugin = function (options) {
$.myPlugin.settings = $.extend({
exampleData: 'default value'
}, options);
}
$.fn.myPlugin = function (methodOrOptions) {
var methods = {
getData: function () {
return $(this).settings.exampleData;
},
init: function (options) {
new $.myPlugin(options);
}
}
if (methods[methodOrOptions]) {
return methods[methodOrOptions].apply($(this), Array.prototype.slice.call(arguments, 1));
} else if (typeof methodOrOptions === 'object' || !methodOrOptions) {
return methods.init.apply($(this), arguments);
} else {
$.error('Method ' + methodOrOptions + ' does not exist on jQuery.myPlugin');
}
};
})(jQuery);
但我得到“无法获取未定义或空引用的属性 'exampleData'”
谁能帮我解决这个问题?
【问题讨论】:
标签: jquery plugins methods properties public