jquery 页面加载后处理事件的JavaScript

bvuwiixz  于 2022-12-18  发布在  jQuery
关注(0)|答案(4)|浏览(173)

当我写一些JavaScript的时候,我有一组界面按钮,当页面加载的时候,它们的事件被分配。我的问题是任何动态创建的东西都不会接收这些事件。
例如,我正在做一个URL检查器,他的工作是确保任何链接到另一个域会弹出一个退出界面,让用户知道他们要离开。任何链接在页面加载后创建,发布 AJAX (没有双关语)或任何东西都不会像页面加载时存在的那样自然发生该事件。
在实践中,什么是确保任何新创建的项目获得此类全局事件的最佳方法?
我喜欢使用jQuery,但这实际上是一个概念问题。
我是否应该创建一个函数来重新应用任何全局链接效果,或者除了逐块执行之外,是否有更聪明的方法?

kzipqqlq

kzipqqlq1#

如果使用jQuery,则可以使用**.live()**方法。
通常在绑定事件处理程序时,该事件处理程序被绑定到一组特定的元素。将来添加的元素不会接收该事件处理程序,除非重新绑定。
jQuery的.live方法通过将其自己的特殊事件处理程序绑定到DOM树的根来解决此问题(依赖于事件冒泡)。当你点击一个元素时,如果它没有直接附加事件处理程序,那么这个事件就会在DOM树中冒泡。jQuery的特殊事件处理程序会捕捉这个事件,查看它的目标,并执行任何用户指定的事件处理程序,这些事件处理程序是通过.live()分配给目标的。

uxh89sit

uxh89sit2#

看看jQuery的live函数。它允许你在加载过程中创建控件时以及创建新控件时附加到事件。这会有性能损失,但除非你加载了很多元素,否则不会很明显。

pgky5nke

pgky5nke3#

您可以使用.live() jQuery方法向页面加载完成后创建的元素添加侦听器,使用您的退出链接示例(如果我理解正确的话):

$(function(){
    $('a.exitLink').live('click',function(event){ /* do stuff when a link of class exitLink is clicked */);
});

这将响应exitLink类的任何链接上的click事件,而不管它是何时创建的(在onload触发之前或之后)。
希望这有帮助:)

avwztpqn

avwztpqn4#

是的,简单地说,你以前可能有过这样的经历:

$('selector').click(function () {});

将其改为:

$('selector').live('click', function() {});

相关问题