现有的JQuery插件中添加功能

4

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

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

或者

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

两种方法都没有起作用,第一个报告$未定义,第二个报告jQuery未定义...

有什么想法吗?

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


你应该澄清你想让这些额外的功能具体做什么。你想如何调用它们?它们应该如何与插件的现有功能交互? - Pointy
抱歉,我想我比你想象的还要不清楚...我想定义一个名为Refresh的函数,它调用HideAll和ShowAll两个函数。我知道我可以创建一个标准的javascript函数来实现这个功能,但我想将其作为插件功能添加进去会更好。这是插件真正应该具备的功能... - kralco626
2个回答

2
你可以添加这些功能,但你必须确保同时加载jQuery本身和要修改的插件。如果你遇到了这些错误(jQuery或"$"未定义),则说明你没有正确地执行这些操作。
虽然你可以添加这些功能,但我不明白这样做的意义何在。例如,如果我这样做:
$.fn.css.myFunction = function() { return "hello world"; };

那么就可以调用它:

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

但这有什么用呢?对我有什么好处?我认为它并不是很有用。


这正是我想的,但jQuery肯定已包含在我的整个网站中,因为我使用了Jquery/Jquery UI。 - kralco626
请注意,页面上的脚本是按照它们被引用的顺序进行评估的。如果您的代码出现在导入jQuery和插件的脚本标签之前,则会出现这些错误。 - Pointy
是的,在你发表评论时我意识到了。我是在jquery.js文件之前引入了我的site.js文件。 - kralco626
看起来,只要在 site.js 之前包含 jquery.js,我的问题中的两种方法都能完美地工作。谢谢! - kralco626
@kralco626 - 推荐使用第二种方法。为插件创建闭包更好,使插件拥有自己的作用域,并且可以在不兼容的情况下使用 $ 符号。 - mekwall
@Marcus - 已经注意到了。我会按照那种方式来做。 - kralco626

0

请确保在 jQuery 之后引入插件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接