【发布时间】:2009-07-07 15:42:15
【问题描述】:
我创建了一个运行良好的 jQuery 插件,直到我开始在一个页面上使用多个对象对其进行测试。问题是,当我从插件中的函数内部访问它时,传递给每个新插件对象的选项对象并不总是与该特定对象关联的相同。我有一种感觉,我错过了一些非常简单的东西,所以代码可能会让事情更清楚。
用于创建插件的方法
$.fn.myPlugin = function(options) {
return this.each(function() {
var opts = $.extend({}, $.myPlugin.defaults, options);
new $.myPlugin($(this), opts);
});
}
访问选项对象的函数
$.myPlugin = function($textbox, options) {
function doSomething($textbox) {
alert(options.someProperty);
}
}
不管我创建插件时的 options.someProperty 是什么。插件内部对 doSomething 的调用将始终返回我创建的第一个插件对象中第一个选项对象的 someProperty,例如:
$textbox.focus(function() { doSomething($textbox); } );
即使聚焦具有不同选项对象的不同对象,这也将始终返回相同的 someProperty。
我希望我已经说得够清楚了。如果您需要更多详细信息,请告诉我。
【问题讨论】:
-
someproperty 到底是什么?它是嵌套的(例如,
options.mouseSettings.clickSpeed)吗? -
不,只是一个简单的值。 var options = { someProperty : true }
-
你是在 myPlugin 方法之外调用 dosomething 吗?
标签: javascript jquery jquery-plugins