[英]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.