在jQuery插件中添加链接的方法



我正在尝试编写一个自动完成的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 等的使用。

最新更新