javascript - WordPress jQuery 函数

标签 javascript jquery wordpress

我正在为此抓狂。我在单独的文件中定义了函数,两个文件都加载了 wp_enqueue_scripts。在每个文件中,我将函数包装在

(function($){

})(jQuery);

问题是,当我尝试调用在不同文件中定义的一个函数时,我得到“函数 xxxx 未定义”,我验证了脚本是否以正确的顺序加载,并且没有错误。我可以在同一个文件中调用该函数并且它可以正常工作,但是当我尝试从不同的文件中调用它时却不能。是否有某种“命名空间”或我缺少的东西?

编辑: 我明白发生了什么事...当我在 (function($) 内部声明一个函数...它不在全局范围内。如果我在其外部定义该函数,我可以访问它。所以我的问题是如何我是否在 (function($).. 中定义全局范围内的函数?

编辑2: 好的,我有一些工作了。我发现我是否声明了如下函数:

ShowForm = function(url){
   ...
}

而不是

function ShowForm(url){
   ...
}

它有效。谁能向我解释为什么我必须以这种方式声明函数?是否有其他方法来定义该函数,以便它在全局范围内可用?

最佳答案

首先你的 jquery 代码会调用一个匿名函数,因此我们正在处理一个函数范围,并且它会在遇到时立即运行。

(function(){.....} ) //anonymous function syntax

您在函数内创建的任何函数在函数外部都将不可用。但这里我们错误地引用了函数……它实际上应该是“函数对象”而不是函数,并且在 js 中你可以将对象分配给变量。

MyNewFunction = (function() {......}); // function object now assigned to variable MyNewFunction

所以在你的第二个例子中,这就是你正在做的事情。

在函数对象中,您可以创建全局变量(即您不会重用已创建的全局变量)。如果在变量之前使用关键字 var,则该变量的作用域将是局部的。

aVariable = 'im global'; //global scope

(function() {
    MyVar= 'im global and can be called outside this function';
    var MyOtherVar= 'im not global and cannot be called outside this function';
    aVariable = 'change this';
});

console.log(MyVar); // global scope = 'im global and can be called outside this function'
console.log(MyOtherVar); // local to above function only scope = undefined
console.log(aVariable); // = global scope (unchanged scope) = 'change this'

因此,当您在函数中创建全局变量并向其分配函数对象时,该函数对象现在在调用创建它的函数后可用(在本例中是在解析时)

(function() {
    MyVar= function() {'alert function running'};
});

MyVar(); // works creates alert

以这种方式设置函数没有任何问题,但如果它们旨在不经修改而使用(即函数不会根据其他内容而改变),您可以通过在全局范围内声明函数来提高代码的可读性首先。

关于javascript - WordPress jQuery 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27462210/

相关文章:

css - 跨浏览器字距适当调整技术

html - 放大页面时,标题和文本隐藏在我的 slider 后面

javascript - 在 html 页面的 iframe 内显示警告框

javascript - jQuery 问题。尝试使用 remove() 时单击了按钮

jquery - DND 图标在屏幕上没有变化,但在 DOM 中发生变化

jquery - 操纵没有类或 ID 的特定 <div> 的 CSS

javascript - 在 php 中插入一个 jQuery 值

javascript - 如何获取高度和宽度或用户本地镜像

javascript - 使用 AJAX 的数据表 - 如何与特定页面共享 URL?

javascript - 在 mongodb 中的另一个查询中使用上一个查询的结果