2009-10-21 68 views
1

我写了一个plugin to highlight terms used to find a page的内部方法。来源是also available。我的问题是,如果你看第一个链接的内嵌JavaScript,我已经做了一个自定义的textPlacement函数来处理显示栏的插入(它看起来有点像Stack Overflow的)。如你所见,我在插入的按钮上有一个事件处理程序。我已经编码删除了栏,但我也想删除条款的突出显示。该插件有这样叫toggleTermHighlighting()的方法。帮助调用一个jQuery插件

如何从示例页面上的匿名函数内部调用该方法?我是否需要制作它this.toggleTermHighlighting = function() {}。我试过把这个实例传递给第一个参数,但是不能让它工作。

对不起,我似乎总是有一个艰难的时间与在JavaScript范围。

有谁知道我能做些什么来从示例页面的匿名函数中访问该方法吗?

回答

4

我认为如果你重构了函数在插件内部定义的方式,它会变得相当容易一些。

更改行128:

var toggleTermHighlighting = function() { 

到:

this.toggleTermHighlighting = function() { 

然后,你可以做这样的事情,从一个完全不同的范围内访问功能:

var myPlug = new $.fn.searchTermsHighlight(); 
myPlug.toggleTermHighlighting(); 

这会回答你的问题,但我认为不同的方法可能更合适。如果你看很多jQuery UI的代码,你可以传递一个字符串到插件,它会执行一个功能你。所以,你可以实际上只是这样做:

$('body').searchTermsHighlight('toggle'); 

,然后就在你的函数的顶部检查,或者在一个init()类型的函数

if (options === 'toggle'){ toggleTermHighlighting(); return this; } 
0

您将不得不自行将“toggleTermHighlighting”作为一个公开的jQuery函数,否则将其功能作为现有方法的一个选项公开。好吧,如果你想要做的东西有点怪异,你可以的东西功能(和其他任何你喜欢)到受影响的对象中的数据元素(见jQuery的“数据”功能)。