javascript - 在 jQuery 插件中添加链接方法

标签 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 */

    });
});

最佳答案

在对我即将删除的答案的评论中(事实证明,它回答了除您真正问题之外的问题),您说过:

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/

相关文章:

javascript - 使用 WordPress 实现巨型菜单

javascript - 如何在 Highcharts 中鼠标悬停时显示数据标签?

Javascript 打印代码而不是在更改 HTML 内容时执行它

onkeup 后的 javascript 延迟

javascript - 如何捕获 html div 以及字符串中输入控件的所有遇到的值?

jquery - 如何使用 jQuery AJAX 加载跨域 html 页面?

jquery - JQuery 插件中单独的 .css?还是嵌入到JS中?

javascript - HTML5 Canvas 在不同机器上的不同颜色值

javascript - 如何在网站上制作一个按预定时间按钮的脚本(如 pg down 或 space)?

javascript - jQuery 插件调用内部函数