javascript - jQuery - 方法链接的插件和命名空间问题

标签 javascript jquery

我正在尝试创建一个可以通过以下方式调用的简单插件:$.myPlugin()$('something').myPlugin()

代码如下:

(function($) {
  $.fn.myPlugin = function(item) {
    return this;
  };

  $.myPlugin = function(item) {
    return $.fn.myPlugin(item);
  };
}(jQuery));

当以上述任何一种方式调用时,这都有效。

但是,调用 $.myPlugin().hide() 确实不起作用。任何链式方法都会失败。

Heres a simple JSBin I made showing the issue

为什么?

最佳答案

您应该返回$(this),而不是jquery this:

(function($) {
    $.fn.myMethod = function() {
      this.append('<p>MY METHOD</p>');

      return $(this);
    };

    $.myMethod = function() {
      return $.fn.myMethod();
    };
}(jQuery));

$(function () {
    // Moment of truth
    $('.output').myMethod().hide('slow');

    $('h1').click(function(){
      $('.output').myMethod().hide();
    });
});

关于javascript - jQuery - 方法链接的插件和命名空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26953919/

相关文章:

php - 使用 Ajax 在 React.js 中提交表单

jquery - 制作叠加层以覆盖另一个元素的高度

javascript - 如何使用 "this"在 react 组件中编写内联 js 事件处理程序代码

javascript - 选择要动态更新的 <DIV>

javascript - Ajax 在循环中成功设置全局变量

javascript - 使用 ngChecked 将评级值绑定(bind)到 Angular 中的单选按钮

javascript - 使用 jQuery 在单击事件时在类之间切换

javascript - JQuery OnClick 显示最近的 div 类未显示

javascript - 将禁用的输出字段更改为带前缀的文本

jQuery - css() 在 Firefox 中无法正常工作