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

时间:2011-10-18 21:28:02

标签: javascript jquery

我有一个应用程序,需要将“ontouchstart”属性添加到每个锚点,以便拥有锚点:活动的CSS状态才能在iOS设备上运行。

麻烦的是整个应用程序在DOM加载后通过AJAX加载内容,这意味着任何$(selector).attr('ontouchstart','')调用只能在初始屏幕上运行,而不是稍后通过AJAX添加的内容。

因为每个屏幕都是由单独的函数加载的(在某些情况下是由函数本身构造的)我想找到一个解决方案,它允许一个适用于所有锚点的jQuery或JavaScript调用,甚至是那些在DOM之后添加的锚点加载而不是通过每个函数并单独添加调用(有数百个)。

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

3 个答案:

答案 0 :(得分:2)

尝试使用livedelegate事件侦听器。这些都适用于onload事件后添加的DOM元素。

答案 1 :(得分:2)

您可以尝试DOMNodeInserted事件:

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

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

答案 2 :(得分:1)

live()delegate()事件就是你要找的东西。