5
像这么多其他类似的问题在这里,我写我的第一个jQuery插件。 它旨在选取一个元素并用可点击的列表元素替换选项,以用作色板。 我的主要功能很好,但我需要添加调用另一种方法的功能,这将禁用某些选项。 我的问题是,当这样做时,我需要绑定一些点击元素并解除其他绑定。Jquery插件,从其他方法调用函数
目前我的原始绑定包含在我的'init'方法内的函数中。我需要能够从另一个“禁用”方法调用该函数。 因此,这里的一些代码:
(function($){
var methods = {
// Init method
init : function(options) {
// Set options
var
defaults = {
clickCallback: function(){} // Define empty function for click callback
}
, settings = $.extend({}, defaults, options)
// Function to bind options
function fnBindOptions(var1, var2, var3) {
// Stuff to bind elements
// Hit the click callback
settings.clickCallback.call(this);
}
return this.each(function() {
// Check that we're dealing with a select element
if(element.is('select')) {
// Loop through the select options and create list items for them
$('option', element).each(function() {
// Stuff to create list elements
// Bind click handler to the new list elements
fnBindOptions(var1, va2, var3);
});
}
});
// return
return this();
}
// Disable buttons method
, disable : function(options) {
// I need to access fnBindOptions from here
$(elementID).children('li').removeClass('disabled').each(function(){
fnBindOptions(var1, var2, var3);
});
}
};
这里是我的问题:我需要禁用它之前调用每个选项绑定功能 - 但我不能从禁用方法中访问fnBindOptions - 因为fnBindOptions包括回调从“设置”变量中,我无法将其移动到“init”方法之外。
那么,有没有人有任何建议吗?
谢谢!要解决这个
辉煌,这似乎很好地工作。谢谢!! – 2011-05-05 07:12:13
很好的答案,肯定帮了我,谢谢。 – Asciant 2012-02-29 01:12:35
我收到一条警告,提示“方法”可能尚未初始化,这是否会通过JSLint? – 2012-09-02 15:28:19