我正在尝试编写一个自动完成的 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 */
});
});
最佳答案
在对我即将删除的答案的评论中(事实证明,它回答了除您真正问题之外的问题),您说过:
I was wondering whether we could have a syntax like this:
$('.advancedSelect').advancedSelect({/*plugin options*/}).onChange(function(){}).css({})
-and by
.css
I meant any other jQuery's methods.
我建议这样做:
$('.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
的使用等等。
关于javascript - 在 jQuery 插件中添加链接方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27765982/