我正在尝试编写一个自动完成的jQuery插件。
所需用法:
$('.advancedSelect').advancedSelect({/*plugin options*/}).change(function(){})/*.otherJQueryMethods*/;
实现:
$.fn.advancedSelect = function({
return this.each(function(){
var $advSel = $('<input/>');
var $el = $(this).after($advSel).hide();
/* my codes on desired functionalities */
/* how is it possible to trigger the chained change method */
});
});
在对我即将删除的答案的评论中(事实证明,它回答了您真正问题以外的问题),您说:
我想知道我们是否可以有这样的语法:
$('.advancedSelect').advancedSelect({/*plugin options*/}).onChange(function(){}).css({})
-
.css
我的意思是任何其他jQuery的方法。
我会建议这样做:
$('.advancedSelect').advancedSelect({/*other plugin options*/, onChange: function(){}}).css({})
或者这个:
$('.advancedSelect').advancedSelect({/*plugin options*/}).advancedSelect("onChange", function(){}).css({})
。对第一个有相当强烈的偏好。:-)
对于第一个选项,您经常看到的辅助词是一种可选的"选项"方法,您可以稍后使用来更改选项:
// Initial setup
$('.advancedSelect').advancedSelect({/*other plugin options*/, onChange: function(){}}).css({})
// Later, I need to change something
$('.advancedSelect').advancedSelect("options", { onChange: function(){}});
旁注:如果这个类似change
的方法是注册一个更改处理程序,为什么不直接使用 jQuery 的 change
(或带有一些特定于插件的事件名称的on
)并让您的插件引发事件?这就是我在插件中处理任何与事件相关的事情的方式。例如,看看 bootstrap 对 shown.bs.modal
等的使用。