我正在写类似
的内容(function($){
function showAlert(){
alert('test');
}
})(jQuery);
当我尝试运行showAlert()时,它表示没有定义showAlert()。
任何人都可以建议为什么?
答案 0 :(得分:1)
我想你在IEFE功能之外调用了这个功能。
在外面打电话不会起作用,因为它不在全球范围内。 IEFE正在创建一个闭包,其中showAlert
成为window
这样做:
(function($){
window.showAlert = function(){
alert('test');
}
})(jQuery);
在IEFE中放置一个函数声明是没有意义的,除非它是一个jquery插件。所以,只需删除它:
function showAlert(){
alert('test');
}
答案 1 :(得分:1)
javascript中的scope of a variable是
showAlert
是一个变量。它仅在您编写的外部函数范围内可用。
如果要为外部范围定义函数,请在外部范围中定义它。
答案 2 :(得分:0)
这应该有效!
function showAlert(x) {
alert(x);
}
showAlert($('#anyElementId').val());
为函数和警报分配变量X.然后将元素val传递给函数调用。
答案 3 :(得分:0)
您在self executing anonymus function
内创建了一个功能。 $(document).ready()
或$(function()...
。
因此,您的函数位于该函数的本地范围内。简单的意思是你无法在该功能之外访问它。
因此,为了使其可访问,只需将其设为全局。
在JavaScript window
中是全局对象。因此,要使您的函数成为全局函数,请按如下方式使用该对象:
$(document).ready(function() {
function showAlert()() {
alert('test');
}
window.showAlert=showAlert(); //NOTE THIS, IT IS IMPORTANT.
});
现在您可以在JS中的其他位置访问它。
以下是
Fiddle
希望它会帮助你!干杯:)..
答案 4 :(得分:0)
如果你想用你的函数扩展jQuery,只需将函数添加到jQuery对象。 像这样:
(function ($) {
$.extend({
showAlert: function () {
alert('test');
}
});
}(jQuery));
将此代码分隔为名为jquery.showAlert.js的文件,在jquery库之后包含它 之后你可以用这种方式使用函数:
$.showAlert()
祝你好运。