[英]jQuery function: pass callback functions as optional arguments to another function
我編寫了以下便利函數,讓我可以輕松地將 jquery UI 自動完成功能放在元素上。
jQuery.fn.bindAutocomplete = function() {
$(this).each( function() {
$(this).autocomplete({
source: $(this).data('autocomplete-source')
});
});
}
我總是使用將data-autocomplete-source
附加到元素的約定,這樣我就可以像這樣在任何地方調用它:
$('input#name').bindAutocomplete();
現在,自動完成功能可以將回調函數作為選項散列后的可選參數。 我幾乎從不需要弄亂它,但我發現在少數情況下我想傳遞成功函數。 顯然,當我需要傳遞回調函數時,我可以重寫完整的自動完成函數,但我寧願只重寫我的bindAutocomplete()
函數,以便它可以接受可選的回調函數並將它們傳遞給autocomplete()
。
那么,你怎么做呢?
更新
我嘗試了這個,基於一個接近但不完全的答案:
jQuery.fn.bindAutocomplete = function(callbacks) {
$(this).each( function(callbacks) {
options = $.extend({source: $(this).data('autocomplete-source')}, callbacks);
$(this).autocomplete(options);
});
}
無論您是否傳入回調,這都會正確綁定自動完成功能,但是如果您確實傳遞了回調,它們就不會被調用。
即:以下觸發了自動完成而不是回調。
$('input#name').bindAutocomplete({ select: function(){alert("working");} })
如果這就是你的意思,我想你可以做到這一點......
jQuery.fn.bindAutocomplete = function( opts ) {
return this.each(function(){
opts = $.extend({
source: $(this).data('autocomplete-source')
}, opts);
$(this).autocomplete( opts );
});
}
$('input#name').bindAutocomplete({
change: function() { ... },
close: function() { ... }
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.