【问题标题】:Add function to existing JQuery plugin向现有的 JQuery 插件添加功能
【发布时间】:2011-01-11 13:30:03
【问题描述】:

是否可以在不修改实际插件的情况下向插件添加功能?我可以在我网站的 js 文件中做这样的事情吗?

$.fn.Watermark.Refresh = function() {
        $.Watermark.HideAll();
        $.Watermark.ShowAll();
    }

(function($){
$.fn.Watermark.Refresh = function() {
        $.Watermark.HideAll();
        $.Watermark.ShowAll();
    };
})(jQuery);

都不行,第一个说 $ 未定义,第二个说 jQuery 未定义...

想法?

解决方案:任何一种方法都可以,只需在站点 js 文件之前包含 jquery 文件即可。

【问题讨论】:

  • 您应该明确您希望这些附加功能到底是什么。你想怎么称呼他们?他们应该如何与插件的现有功能进行交互?
  • 对不起,我想我比你想象的更不清楚......我想定义一个名为 Refresh 的函数,它同时调用 HideAll 和 ShowAll。我知道我可以创建一个标准的 javascript 函数来执行此操作,但我认为将它作为插件的函数添加会很好。这是插件真正应该具备的功能......

标签: javascript jquery html jquery-plugins


【解决方案1】:

您可以根据需要添加这些函数,但您必须确保您还加载了 jQuery 本身和要修改的插件。如果您遇到这些错误(未定义 jQuery 或“$”),那么您没有正确地做到这一点。

现在,虽然您确实可以添加这些功能,但我想知道重点是什么。如果我要这样做,例如:

$.fn.css.myFunction = function() { return "hello world"; };

那么就可以调用它了:

var str = $.fn.css.myFunction();

但那又怎样?这对我有什么好处?我觉得用处不大。

【讨论】:

  • 这就是我的想法,但 jQuery 绝对包含在内,因为我的整个网站都是在 Jquery/Jquery UI 中完成的
  • 好吧,请注意页面上的脚本按照它们被引用的顺序进行评估。如果您的代码在导入 jQuery 和插件的脚本标记之前 出现,那么您会收到这些错误。
  • 是的,在您发表评论时意识到这一点。我在 jquery.js 文件之前包含了我的 site.js 文件。
  • 只要将 jquery.js 包含在 site.js 之前,我的问题中的两种方法中的任何一种都可以正常工作。谢谢!
  • @kralco626 - 首选和推荐第二种方法。为你的插件创建一个闭包要好得多,让你的插件有自己的范围来玩,同时能够使用 $ 而没有兼容性问题。
【解决方案2】:

确保您在 jQuery 之后包含插件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-08
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多