Javascript 帮助调用jQuery插件的内部方法

Javascript 帮助调用jQuery插件的内部方法,javascript,jquery,jquery-plugins,scope,Javascript,Jquery,Jquery Plugins,Scope,我写了一封信。消息来源是 我的问题是,如果您查看第一个链接的内联JavaScript,我已经创建了一个自定义textPlacement函数来处理显示栏的插入(它看起来有点像堆栈溢出) 如您所见,我在插入的按钮上有一个事件处理程序。我已经对删除栏进行了编码,但我也希望删除突出显示的术语。该插件有一种方法来实现这一点,称为toggleTermHighlighting() 如何从示例页面上的匿名函数内部调用该方法?我需要将其设置为this.toggleTermHighlighting=function

我写了一封信。消息来源是

我的问题是,如果您查看第一个链接的内联JavaScript,我已经创建了一个自定义textPlacement函数来处理显示栏的插入(它看起来有点像堆栈溢出)

如您所见,我在插入的按钮上有一个事件处理程序。我已经对删除栏进行了编码,但我也希望删除突出显示的术语。该插件有一种方法来实现这一点,称为
toggleTermHighlighting()

如何从示例页面上的匿名函数内部调用该方法?我需要将其设置为this.toggleTermHighlighting=function(){}。我试着将这个例子传递给第一个参数,但无法使它起作用

抱歉,我似乎总是很难使用JavaScript中的作用域


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

您必须使“toggleTermHighlighting”本身成为一个公开的jQuery函数,或者将其功能作为现有方法的一个选项公开。好吧,如果你想做一些奇怪的事情,你可以把函数(以及你喜欢的任何东西)塞进受影响对象的数据元素中(参见jQuery“data”函数)。

你必须让“toggleTermHighlighting”单独成为一个公开的jQuery函数,或者将其功能作为现有方法上的选项公开。嗯,如果你想做一些奇怪的事情,你可以把函数(以及你喜欢的任何东西)塞进受影响对象上的数据元素中(参见jQuery“data”函数)。

我认为如果你重新构造插件中函数的定义方式,它会变得更容易一些

将第128行更改为:

var toggleTermHighlighting = function() {
致:

然后,您可以执行类似操作,从完全不同的范围访问函数:

var myPlug = new $.fn.searchTermsHighlight();
myPlug.toggleTermHighlighting();
这将是对你问题的回答,但我认为另一种方法可能更合适。如果查看大量jQueryUI代码,可以将字符串传递到插件中,它将为您执行一个函数。所以你实际上可以这样做:

$('body').searchTermsHighlight('toggle');
然后只需在函数顶部或init()类型函数中检查它

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

我认为如果你重新构造插件中函数的定义方式,它会变得容易一些

将第128行更改为:

var toggleTermHighlighting = function() {
致:

然后,您可以执行类似操作,从完全不同的范围访问函数:

var myPlug = new $.fn.searchTermsHighlight();
myPlug.toggleTermHighlighting();
这将是对你问题的回答,但我认为另一种方法可能更合适。如果查看大量jQueryUI代码,可以将字符串传递到插件中,它将为您执行一个函数。所以你实际上可以这样做:

$('body').searchTermsHighlight('toggle');
然后只需在函数顶部或init()类型函数中检查它

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