[英]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.