添加方法链接jQuery插件

时间:2015-01-04 13:28:18

标签: javascript jquery jquery-plugins jquery-chaining

我正在尝试编写一个自动完成的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 */

    });
});

1 个答案:

答案 0 :(得分:2)

在对我即将删除的答案的评论中(因为它回答了一个问题,而不是你的真实问题,事实证明),你已经说过:

  

我想知道我们是否可以使用这样的语法:

$('.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等等。