我的插件需要一些時間來做一些事情。所以我想聽聽插件何時完成任務,從外面看,這樣我就可以展示一些東西。如何聆聽來自我的jquery插件之外的事件?
我想有這樣的事情 -
$('li').filterGroup ({
onInit: function(){
alert("plugin has started working");
},
onComplete: function(){
alert("plugin has finished");
}
})
我想我的插件代碼裏面寫這 -
(function($) {
// jQuery plugin definition
$.fn.filterGroup = function(config)
{
var settings = {
//some settings defined here
};
var thisDropdown = this; //master copy
if(config)
{
$.extend(settings, config);
}
/*Tried following changes to make events work*/
/*Tried following changes to make events work*/
/*Tried following changes to make events work*/
//I tried the following – assuming I will be able to listen to an onComplete event from outside
// reference the function from the options passed
var theFunc = config.onInit;
var anotherFunc = config.onComplete;
theFunc.call(); //does not work - gives error "theFunc is not a function"
this.each(function()
{
//here my plugin logic is done
anotherFunc.call(); //this is also not working - "anotherFunc is not a function"
});
// allow jQuery chaining
return thisDropdown;
};
但是這不工作,我得到的錯誤 -
theFunc is not a function
注 -我檢查了PLugins創作文檔特別是事件部分http://docs.jquery.com/Plugins/Authoring#Events,但看起來像是用於定義可以從外部調用的公共函數,所以不是我所期待的。原來的jQuery文檔在這裏呢?我想我只需要正確地遵循文檔。
還檢查了以下問題,但沒有得到 -
Bind Event to Custom Plugin Function in jQuery
Custom Event For Custom JQuery Plugin
Handle events in a jQuery plugin
更新
好,我知道我的錯誤,在我實際的代碼我有theFunc.call()
和anotherFunc.call()
但在呼叫部分我只處理了onComplete
。所以,我需要明確地寫出的OnInit()部分在我的插件調用 -
這部分 -
onInit: function(){
alert("plugin has started working");
}
我的意思是,如果事件被內部插件定義,如果我不想處理什麼在外面的代碼?
我的建議是在代碼中使用console.log來查看配置中的內容以及Func的實際值。使用Firebug或Chrome瀏覽器javascript控制檯查看正在記錄的內容。 – Joost