Javascript 将单击处理程序附加到动态生成的锚标记
我动态生成一些标记并将其注入DOM,如下所示:Javascript 将单击处理程序附加到动态生成的锚标记,javascript,jquery,Javascript,Jquery,我动态生成一些标记并将其注入DOM,如下所示: content+='<td><a class="reportLink" onclick="showReport();return false;" href="'+layerResults.features[i].attributes['Information_External']+'">Info</a></td>'; function showReport() { console.log('st
content+='<td><a class="reportLink" onclick="showReport();return false;" href="'+layerResults.features[i].attributes['Information_External']+'">Info</a></td>';
function showReport() {
console.log('stopped');
}
仍然不能阻止链接从我的页面导航出去
第二个问题是,当我尝试使用
jQuery('.reportLink'.on('click', function(e) {
e.preventDefault();
console.log('clicked');
});
这件事永远不会发生。我正在使用jquery1.7.2
这让我有点疯狂,因为这是一项简单的任务,我在jQuery中已经做了无数次为了防止它离开,请在console.log'stopped'之后立即输入它
return false;
对于第二个,我通常使用这种语法,也许它会有帮助:
jQuery(".reportLink").click(function() {
//do something
});
为了防止它离开,请在console.log'stopped'之后立即输入此命令
return false;
对于第二个,我通常使用这种语法,也许它会有帮助:
jQuery(".reportLink").click(function() {
//do something
});
将事件处理程序委托给加载dom时存在的父元素。您可以将主体替换为该父对象
jQuery('body').on('click','.reportLink', function(e){
e.preventDefault();
console.log('clicked');
});
来自jquery文档
事件处理程序仅绑定到当前选定的元素;在代码调用.on时,它们必须存在于页面上。要确保元素存在并且可以选择,请在页面上HTML标记中的元素的文档就绪处理程序中执行事件绑定。如果将新HTML注入页面,请在将新HTML放入页面后选择元素并附加事件处理程序。或者,使用委派事件来附加事件处理程序,如下所述
委派事件的优点是,它们可以处理来自子元素的事件,这些子元素将在以后添加到文档中。通过选择在附加委派事件处理程序时保证存在的元素,可以使用委派事件来避免频繁附加和删除事件处理程序。例如,该元素可以是模型-视图-控制器设计中视图的容器元素,如果事件处理程序希望监视文档中的所有冒泡事件,则可以是文档。文档元素在加载任何其他HTML之前都在文档的头部可用,因此可以安全地在那里附加事件,而无需等待文档准备就绪
除了能够处理尚未创建的子元素上的事件外,委托事件的另一个优点是,当必须监视许多元素时,它们的开销可能会低得多。在tbody中包含1000行的数据表上,此示例将处理程序附加到1000个元素:
将事件处理程序委托给加载dom时存在的父元素。您可以将主体替换为该父对象
jQuery('body').on('click','.reportLink', function(e){
e.preventDefault();
console.log('clicked');
});
来自jquery文档
事件处理程序仅绑定到当前选定的元素;在代码调用.on时,它们必须存在于页面上。要确保元素存在并且可以选择,请在页面上HTML标记中的元素的文档就绪处理程序中执行事件绑定。如果将新HTML注入页面,请在将新HTML放入页面后选择元素并附加事件处理程序。或者,使用委派事件来附加事件处理程序,如下所述
委派事件的优点是,它们可以处理来自子元素的事件,这些子元素将在以后添加到文档中。通过选择在附加委派事件处理程序时保证存在的元素,可以使用委派事件来避免频繁附加和删除事件处理程序。例如,该元素可以是模型-视图-控制器设计中视图的容器元素,如果事件处理程序希望监视文档中的所有冒泡事件,则可以是文档。文档元素在加载任何其他HTML之前都在文档的头部可用,因此可以安全地在那里附加事件,而无需等待文档准备就绪
除了能够处理尚未创建的子元素上的事件外,委托事件的另一个优点是,当必须监视许多元素时,它们的开销可能会低得多。在tbody中包含1000行的数据表上,此示例将处理程序附加到1000个元素:
这正是我在另一个线程中找到的解决方案,但它没有启动。我把它放在创建DOM节点的回调函数中,它工作得非常好。谢谢。这正是我在另一个线程中找到的解决方案,但它没有启动。我把它放在创建DOM节点的回调函数中,它工作得非常好。谢谢。return false不是取消冒泡的正确方法。但不可否认,我确实尝试过。return false不是取消冒泡的正确方法。但不可否认,我确实试过了。