2011-10-24 93 views
0

我已經添加回調到我的jQuery插件。jQuery調用jQuery插件的回調

$.fn.myPlg= function(options, callback) { 
    if(callback) { 
     //do stuff 
    } 
} 

現在如何從jQuery的調用這個回調例如

$(document).myPlg(function(){ 

// how to call callback? 

}); 
+3

您不要從代碼的第二塊回調,調用從第一個回調。第二塊_IS_回調。 – BNL

+0

@BNL - 對不起,請你解釋一下。我不完全明白這一點。我想在插件完成工作後執行代碼。回調是否是正確的做法?請舉例嗎? – Iladarsda

+0

增加了一個答案w/example。 – BNL

回答

1

這將導致回調函數來執行:

$.fn.myPlg= function(options, callback) { 
    if(callback) { 
     callback(); 
    } 
} 

正如Samich說,你應該使用一個Options對象,即使回調是您唯一的選擇。這樣您可以輕鬆添加更多選項。

做它看起來像這樣的方式:

$.fn.myPlg= function(options) { 
    if(options.callback) { 
     options.callback(); 
    } 
} 

$(document).myPlg({ 
    callback: function() { 
    // callback logic here 
    } 
}); 
+0

因此''callback();'從我的插件執行'callback:function(){ //回調邏輯這裏 }'形式在這裏? – Iladarsda

+0

是的,它會.321 – BNL

+0

好的。我現在瞭解得更多了。感謝您的時間和精力。 – Iladarsda

0

你的情況,這將是第二個參數:

$(document).myPlg({option1: 'a', option2: 'b'}, function(){ 
    // callback logic here 
}); 

但請注意,您需要調用插件內回調定義,而不是用法。我的意思是在你的樣品的第一部分。

這是更好地將其包括在選項:

$.fn.myPlg= function(options) { 
    if(options.callback) { 
     //do stuff 
    } 
} 

$(document).myPlg({ 
    option1: 'a', 
    option2: 'b', 
    callback: function() { 
     // callback logic here 
    } 
}); 
+0

如果沒有比回調更多的選項,情況如何? – Iladarsda

+0

然後你的插件應該能夠處理第一個參數作爲回調。 – Samich

+0

我是否必須在'myPlg selector'中使用回調來運行插件中的代碼? 'if(options.callback){ // here }' – Iladarsda