gpt4 book ai didi

javascript - 我可以在 JavaScript 窗口全局对象中定义的某个对象中找到 JQuery 函数吗?

转载 作者:行者123 更新时间:2023-11-29 10:10:34 25 4
gpt4 key购买 nike

我是 JavaScript 和 JQuery 的新手,我有以下疑问。

我知道如果我打开 FireBug 控制台键入 window 我会看到 global object 的内容,在浏览器中运行的 JavaScript 应用程序就是当前浏览器选项卡(窗口)。

好的,所以在这个全局对象中我可以看到所有全局变量和所有全局函数(未在另一个函数中定义的变量和函数)。

所以我有一个链接我的 .js 文件的页面。

此文件将包含一些纯 JavaScript 函数,如下所示:

function myFunction() {
.................................
.................................
.................................
}

所以我会将 myFunction 函数视为 window 全局对象的一个​​字段,因为该函数是全局(它未定义在另一个函数中)。这对我来说非常清楚。

因此,在我页面内链接的 .js 文件中,我也有类似这样的内容:

$(document).ready(function() {

$("#myButton").click(function() {
............................................
............................................
DO SOMETHING WHEN THE BUTTON HAVING id="myButton" IS CLICKED
............................................
............................................
});
});

所以,这是一个 JQuery 代码,它应该以这种方式工作(如果我做错了断言,请纠正我)。

$JQuery objet(或者它是什么?)。

在这个 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...});

我在哪里可以找到 window 全局对象中定义的某个对象中的 function() {...DO SOMETHING...} 的定义?我能找到吗?还是我遗漏了什么?

最佳答案

jQuery 将其与事件相关的数据存储在应用于每个元素的数据对象 events 中。您可以使用 $._data() 获取此信息:

$._data($('#myButton')[0], 'events')

$._data(document.getElementById('myButton'), 'events')

要获取您为按钮的点击监听器应用的回调函数,您可以简单地获取处理程序。例如:

$("#myButton").click(function () { console.log('clicked'); });

var eventsInfo = $._data(document.getElementById('myButton'), 'events');

console.log(eventsInfo.click[0].handler);

上面应该打印出“function () { console.log('clicked'); }”。

请记住,$._data() 没有可用的公共(public)文档,尽管了解它是件好事!

以下blog post在 jQuery v1.8 发布时提到了 $._data() 但确实警告了这一点:

Note that this is not a supported public interface; the actual data structures may change incompatibly from version to version.

那是在 2012 年。直到今天,它似乎在最新的 1.x 和 2.x 版本上运行良好,所以我认为这不会很快消失。

关于javascript - 我可以在 JavaScript 窗口全局对象中定义的某个对象中找到 JQuery 函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34309675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com