【发布时间】:2016-03-22 10:49:10
【问题描述】:
我是 JavaScript 和 JQuery 的新手,我有以下疑问。
我知道如果我打开 FireBug 控制台键入 window 我会看到 global object 的内容在运行到浏览器的 JavaScript 应用程序中是当前浏览器选项卡(窗口)。
好的,所以在这个全局对象中我可以看到所有的全局变量和所有的全局函数(变量和没有在另一个函数中定义的函数)。
所以我有一个链接我的 .js 文件的页面。
这个文件将包含一些像这样的纯 JavaScript 函数:
function myFunction() {
.................................
.................................
.................................
}
所以我会将 myFunction 函数视为 window 全局对象的一个字段,因为该函数是 global(它没有定义在另一个函数中)。这一点我很清楚。
所以,在我的页面内链接的 .js 文件中,我也有这样的内容:
$(document).ready(function() {
$("#myButton").click(function() {
............................................
............................................
DO SOMETHING WHEN THE BUTTON HAVING id="myButton" IS CLICKED
............................................
............................................
});
});
所以,这是一个 JQuery 代码,它应该以这种方式工作(如果我做错了断言,请纠正我)。
$ 是 JQuery 对象(或者它是什么?)。
在这个 JQuery 对象上,我调用 ready() 函数,该函数是在 DOM 完全呈现时执行其内部回调函数的函数。
所以内部回调函数包含:
$("#myButton").click(function() {...DO SOMETHING...});
选择一个具有 id="myButton" 的按钮并向其添加 click 事件侦听器,该事件侦听器本身定义了在单击按钮时执行的内部回调函数.
是真的吗?
好的...所以我认为所有这些东西都不是直接在全局对象中,因为它不是直接定义到我的 .js 文件中,而是必须在一些专用于 JQuery 的内存空间中。
所以查看 FireBug 控制台内的 window 对象,我发现了两个对象:
-
$:我认为是 JQuery 对象...所以我认为我以前的自定义 JQuery 函数必须在这里,但我找不到它。
JQuery:这是 window 全局对象内的另一个对象。
所以,我的疑问是:当我在 ready() 函数中声明类似
$("#myButton").click(function() {...DO SOMETHING...});
在哪里可以找到 function() {...DO SOMETHING...} 在 window 全局对象中定义的某个对象的定义?我能找到吗?还是我错过了什么?
【问题讨论】:
-
问题到底是什么?您希望能够检索分配为单击处理程序的函数吗?
-
我想了解 JQuery 函数在窗口对象结构中的位置,以便深入了解 JQuery 是如何工作的(我需要它来调试其他一些奇怪的情况)
-
好的-该功能不在窗口的正下方。它是提供给元素本身的点击处理程序的匿名函数。
-
好的,但是我在哪里可以找到特定选定 div 的点击处理程序?
-
@AndreaNobili - 如果您看到我的回答,有一种方法可以让您看到单击按钮时正在应用的确切功能。尽管其他人在这里指出了什么,但函数是否匿名并不重要,因为 jQuery 存储有关应用的事件侦听器的信息。
标签: javascript jquery javascript-objects javascript-framework