我写了plugin to highlight terms used to find a page。来源是also available。
我的问题是,如果你查看第一个链接的内联JavaScript,我已经创建了一个自定义textPlacement函数来处理显示栏的插入(它看起来有点像Stack Overflow)。
如您所见,我在插入的按钮上有一个事件处理程序。我编写了删除栏的编码,但我也想删除条款的突出显示。该插件有一个名为toggleTermHighlighting()
的方法。
如何从示例页面上的匿名函数内部调用该方法?我需要制作this.toggleTermHighlighting = function() {}
吗?我已经尝试将其中的一个实例传递给第一个参数,但无法使其工作。
抱歉,我似乎总是在JavaScript中使用范围很难。
有没有人知道我能做什么才能从示例页面的匿名函数中访问该方法?
答案 0 :(得分: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; }
答案 1 :(得分:0)
您将不得不将“toggleTermHighlighting”本身作为一个公开的jQuery函数,或者将其功能作为现有方法的一个选项公开。好吧,如果你想做一些有点奇怪的事情,你可以将函数(以及你喜欢的任何东西)填充到受影响对象的数据元素中(参见jQuery“data”函数)。