2

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

    });
});
4

1 回答 1

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使用一些特定于插件的事件名称)并让您的插件引发事件?这就是我在插件中处理任何与事件相关的事情的方式。shown.bs.modal例如,看看 bootstrap 对等的使用。

于 2015-01-04T19:05:23.067 回答