如何访问JQuery插件扩展方法

时间:2011-05-12 07:50:06

标签: javascript jquery plugins

我目前正在使用名为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)

谢谢, 尼古拉斯

1 个答案:

答案 0 :(得分:1)

$('#someDivId').raty();会将函数附加到此特定jQuery对象实例。当您再次呼叫$('#someDivId')时,将创建一个新实例。

您必须保留对原始实例的引用:

var $div = $('#someDivId').raty();
// later
$div.activate();

这假定raty()是一个好公民并返回this。如果没有,您必须先做出参考:

var $div = $('#someDivId');
$div.raty();