我想在jQuery中触发一些事件。我的触发器功能不在document.ready函数中。它不工作。如果我把代码放在document.ready中,它就起作用了。jQuery中的document.ready函数没有触发事件
即使它们不在document.ready函数中,也触发了一些其他事件。
请让我清楚为什么某些事件只能在document.ready函数内工作的功能。
感谢
我想在jQuery中触发一些事件。我的触发器功能不在document.ready函数中。它不工作。如果我把代码放在document.ready中,它就起作用了。jQuery中的document.ready函数没有触发事件
即使它们不在document.ready函数中,也触发了一些其他事件。
请让我清楚为什么某些事件只能在document.ready函数内工作的功能。
感谢
Web浏览器执行遇到当这一切立即JS,即使网页没有加载完成。在情况中,你应该期望当你的JS执行时,部分或全部DOM仍然不可用,因为它仍然从服务器上下载。
将事件处理程序附加到元素仅在DOM中存在这些元素时才起作用,因此可以在您尝试附加它们时选择它们。因为选择器(.some_element_not_yet_loaded
)与任何内容都不匹配,所以发出命令$('.some_element_not_yet_loaded').click(function(){alert('Element Clicked')})
是无效的。
确保您尝试附加处理程序的元素存在于DOM中的唯一方法是等待,直到document.ready事件被触发为止(直到DOM确实完成加载后才会触发此事件并且实际上准备好了)。
你看到不一致的行为的原因是因为这是一个经典的竞争条件 - 基于从服务器加载DOM的速度或速度有多快,并由浏览器初始化确定哪些元素出现在你的JS执行。在某种程度上,您可以通过将JS移动到页面底部来进行欺骗,但是因为DOM从JS的执行异步初始化,所以偶尔会导致问题。因此,最好将所有JS初始化代码放在document.ready事件中,以完全确保DOM已完全加载并准备就绪。
感谢Robert Lee的精彩演绎 – rsvijay
哪些事件?哪些触发器?将您的代码添加到您的问题。 –
我有一个按钮点击事件。当我点击按钮时,单击事件不会触发 – rsvijay
不可能在没有看到代码的情况下判断代码有什么问题。 – JJJ