繁体   English   中英

找不到自定义jQuery插件

[英]Unable to find custom jQuery plugin

我在myPlugin.js中开发了一个jQuery插件,如下所示:

(function ($) {
    $.fn.myPlugin = function (options) {

        var defaults = {};

        var settings = $.extend(defaults, options);

        return this.each(function () {
            this.sayHello = function () {
                alert('Hello!');
            };
        });
    };
})(jQuery);

我正在从另一个文件call.js调用sayHello()方法,如下所示:

myPlugin.sayHello();

HTML文件中包含myPlugin.js和call.js。 当编译器进入myPlugin.sayHello(); 它报告错误Uncaught ReferenceError: myPlugin is not defined

我的代码有什么问题?

更新

我找到了解决方案。 我在代码中的某个地方初始化了一个特定元素的插件,例如。 $('#someElement').myPlugin(); 我只需要使用someElement.sayHello();调用一个插件函数即可someElement.sayHello(); 并且有效。

另一个解决方案如@antyrat建议。

 (function ($) { $.fn.myPlugin = function (options) { var defaults = {}; var settings = $.extend(defaults, options); return this.each(function () { this.sayHello = function () { alert('Hello!'); }; }); }; })(jQuery); $( 'body' ).myPlugin(); console.log($( 'body' )) $( 'body' )[0].sayHello(); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

您已经通过使用fn快捷方式( prototype )扩展了jQuery对象。 因此,您需要将插件作为jQuery方法调用:

$.myPlugin.sayHello();

更新资料

从我的代码中可以看到,如果要调用sayHello函数,则需要在某些元素上对其进行初始化,例如:

$( 'body' ).myPlugin();

然后调用您的方法:

$( 'body' )[0].sayHello();

[0]因为this.sayHello = function () {我们需要this.sayHello = function () {指的是DOM元素,而不是jQuery

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM