2009-10-21 106 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的「數據」功能)。