在DOM已经加载之后,使用jQuery或JavaScript向锚添加属性

在DOM已经加载之后,使用jQuery或JavaScript向锚添加属性,javascript,jquery,Javascript,Jquery,我有一个应用程序,需要将“ontouchstart”属性添加到每个锚点,以便使锚点:活动CSS状态在iOS设备上工作 问题是,整个应用程序在加载DOM之后通过AJAX加载内容,这意味着任何$(选择器).attr('ontouchstart','')调用将只在初始屏幕上工作,而不会在以后通过AJAX添加内容 因为每个屏幕都是由单独的函数加载的(在某些情况下是由函数本身构建的),所以我想找到一个解决方案,允许对所有锚进行单个jQuery或JavaScript调用,即使是那些在加载DOM之后添加的函数

我有一个应用程序,需要将“ontouchstart”属性添加到每个锚点,以便使锚点:活动CSS状态在iOS设备上工作

问题是,整个应用程序在加载DOM之后通过AJAX加载内容,这意味着任何
$(选择器).attr('ontouchstart','')
调用将只在初始屏幕上工作,而不会在以后通过AJAX添加内容

因为每个屏幕都是由单独的函数加载的(在某些情况下是由函数本身构建的),所以我想找到一个解决方案,允许对所有锚进行单个jQuery或JavaScript调用,即使是那些在加载DOM之后添加的函数,也不需要逐一检查每个函数并单独添加调用(有数百个)


这可能吗?任何帮助都将不胜感激。

尝试使用或事件侦听器。这两种方法都适用于在onload事件之后添加的DOM元素。

和事件是您要查找的。

您可以尝试DomainNodeInserted事件:

$(document).bind('DOMNodeInserted', function(event) {
  if (event.target.nodeName == 'A') {
    $(event.target).attr('ontouchstart','');
  }
});

当任何类型的节点添加到DOM中时,事件本身都会触发,代码只测试节点名(标记)并添加属性。

我过去使用过$.live(),但据我所知,它是特定于事件的。在上面概述的案例中,我将使用什么事件?再次阅读,听起来您没有等待任何事件(或者说AJAX调用就是事件)。据我所知,您不能在“future”元素上设置属性。您必须在每次ajax调用之后添加该属性。非常有趣!在每个节点插入时触发事件是否有任何性能问题?我已经了解到JS变异事件(这是其中之一)确实会有性能损失,实际上Mozilla,它们是……但您可能会使用它,这取决于您的应用程序有多复杂。最好的方法是运行一个基准测试,如果可以的话,可以使用:-)。我只是想把它作为一个可能的替代品来表达,谢谢你;这绝对是最好的选择。。。我只需要看看性能惩罚=)