无法找到自定义 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();
myPlugin.js 和 call.js 都包含在我的 HTML 文件中。当编译器到达 myPlugin.sayHello();
行时,它报告错误 Uncaught ReferenceError: myPlugin is not defined
.
我的代码有什么问题?
更新
我找到了解决办法。我在我的代码中的一个地方初始化了一个特定元素的插件,例如。 $('#someElement').myPlugin();
。我只需要用 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 () {
引用 DOM 元素,而不是 jQuery
我在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();
myPlugin.js 和 call.js 都包含在我的 HTML 文件中。当编译器到达 myPlugin.sayHello();
行时,它报告错误 Uncaught ReferenceError: myPlugin is not defined
.
我的代码有什么问题?
更新
我找到了解决办法。我在我的代码中的一个地方初始化了一个特定元素的插件,例如。 $('#someElement').myPlugin();
。我只需要用 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 () {
引用 DOM 元素,而不是 jQuery