【问题标题】:How I can extend a jquery plugin from another for overwrite methods?如何从另一个扩展 jquery 插件以覆盖方法?
【发布时间】:2011-09-07 22:22:09
【问题描述】:

我需要从另一个扩展插件,谁是最好的方法???

扩展将覆盖方法并添加任何设置。

我有一个运行良好的 foo 插件,现在...我需要从 foo 扩展另一个插件 bar

我写了下面的代码,但是不行:

(function($) {
  var methods = {
    'onErrors': function (o, otherErrors) {
    }
  }
  $.extend(true, $[foo][bar].prototype, extensionMethods);
})(jQuery);

现在,应该如何编写插件扩展??

谢谢

【问题讨论】:

  • 你需要更好地解释你的问题

标签: jquery plugins extends


【解决方案1】:

可能查看jQuery Hook 扩展?

虽然我不能 100% 确定你想要做什么。一些示例代码会很棒(或者更好地解释您要完成的工作)。

编辑

另见this post函数钩子的精髓。

【讨论】:

  • 亲爱的布拉德,不...我不需要钩子,我需要从另一个插件扩展插件。
  • 我有一个运行良好的 foo 插件,现在...我需要从 foo 扩展另一个插件栏。我写了以下代码,但不起作用: [code] (function($) { var methods = { 'onErrors': function (o, otherErrors) { } } $.extend(true, $[foo][bar] .prototype, extensionMethods); })(jQuery); [code] 现在,插件扩展应该怎么写??
  • @Yecid:一切都取决于方法的访问级别/公开。如果你编写了插件,我建议让它们更加模块化,以便扩展它们是可行的(就像 jQuery 使用 $.extend 能力所做的那样)
【解决方案2】:

根据您包含的示例代码,我猜您正在尝试实现this answer 中显示的内容。

如果是这样,那么这里有两个问题。

首先,您将方法列表声明为methods,然后尝试将其用作extensionMethods

其次,更重要的是,您似乎误解了该示例(或者我可能误解了您的要求?)。 $.extend() 不允许您从 foo 创建新插件 bar。但是,您可以使用其他方法扩展 foo。像这样:

(function($) {
   var extensionMethods = {
      // ....
   }
   $.extend($.fn.foo, extensionMethods);
})(jQuery);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多