我目前正在使用名为Raty的JQuery插件(以及其他许多插件),正常插件执行以下操作:
(function($){
$.fn.raty = function(settings, url){
// Some default operations
// Some functions
this.activate = function(){}
this.reset = function(){}
};
});
然后在我的代码中,我通过这样做来调用它:
$('#someDivId').raty();
出现问题,当我想在“someDivId”上调用其中一个扩展方法(例如reset())时,我会在稍后阶段使用jquery $('#someDivId')查找它,但是当我执行时对它的任何扩展方法都会发生错误(对象似乎没有附加这些方法)。
这是一段无效的代码:
$('#someDivId').activate();
我的问题是,你知道是否有可能从插件外部访问这些方法?如果没有,你知道这样做的一般方法吗?
在当前示例中,我最终添加了一个隐藏链接,可以单击该链接以触发任何这些方法。 (但它对我来说仍然是一个丑陋的黑客:P)
谢谢, 尼古拉斯
答案 0 :(得分:1)
$('#someDivId').raty();
会将函数附加到此特定jQuery对象实例。当您再次呼叫$('#someDivId')
时,将创建一个新实例。
您必须保留对原始实例的引用:
var $div = $('#someDivId').raty();
// later
$div.activate();
这假定raty()
是一个好公民并返回this
。如果没有,您必须先做出参考:
var $div = $('#someDivId');
$div.raty();