2012-01-04 76 views
10

我想調用我的jquery-plugin(基於widget-factory)中的函數。jquery - 如何使用widget-factory插件中的參數調用函數?

是這樣的:

(function($, window) { 
    $.widget("mobile.multiview",$.mobile.widget, { 
     stackUp: function (source, event, data) { 
      ... 
     } 
    } 
}) (jQuery,this); 

我想打電話給疊層從插件之外。問題:我不知道如何正確傳遞參數。這是行不通的:

$('#trigger').multiview("stackUp('pagination', fakeEvent, fakeData)"); 

有人可以指向正確的調用插件內的公共功能和傳遞參數的語法嗎?

UPDATE:

我可以調用該函數是這樣的:

$('#trigger').multiview('stackUp'); 

,但我怎麼可以傳遞參數?

回答

21

好吧,無盡的干預後,參數或參數傳遞這樣的:

$("#trigger").multiview('stackUp','pagination', fakeEvent, fakeData); 

你必須用逗號分隔的功能後添加參數。希望這可以幫助別人。

+0

Thanks!for information! – 2014-09-28 11:16:53

+0

這裏提到的是什麼''#trigger'':S – OZZIE 2015-02-05 09:11:11

+0

@OZZIE:id爲'trigger'的元素,但是這是前一段時間。仍然有幫助 – frequent 2015-02-05 10:45:28

1

我不是很熟悉,但jquery試試這個:

$("#trigger").multiview(function() { stackUp('pagination', fakeEvent, fakeData); }); 

。這是將在需要你的靜態和動態參數執行的匿名函數。

+0

hm。不能讓stackUp像這樣開火。 – frequent 2012-01-04 12:11:58

+0

也許這是缺少的引號。我會添加它們。 – rekire 2012-01-04 12:13:59

+0

你的匿名函數很好,但從未在我的腳本中被解僱。我發現了widgety的方式。看到我的答案。感謝幫助! – frequent 2012-01-04 14:40:56

1

我真的不知道怎麼說的插件擴展,並公開其功能,但我想你可以嘗試以下方法之一:

$.mobile.widget.stackUp.apply($('#trigger'), ['pagination', fakeEvent, fakeData]); 
$.mobile.multiview.apply($('#trigger'), ['pagination', fakeEvent, fakeData]); 

然而其完全有可能的,他們不公開該方法。你有代碼嗎?

UPDATE

後竟發現什麼這個插件是我的文檔閱讀了,你應該能夠TODO:

$('#trigger').stackUp(...) 

查看源代碼在這裏:http://jqueryui.com/demos/widget/default.html - 並期待在random定義的函數。

或者,您可以在更全局的作用域中定義函數,然後將其用作配置對象的一部分,以及何時將其應用於特定元素。

+0

返回:表達式'$ .mobile.widget.stackUp'[undefined]的結果不是一個對象。耽誤。讓我再嘗試一次。羅。不起作用。 – frequent 2012-01-04 12:13:17

+0

你的意思是哪個代碼?窗口小部件工廠? – frequent 2012-01-04 12:15:26

+0

是的,你有沒有在jsFiddle或住在某個地方? – nav 2012-01-04 12:19:44

相關問題