当前位置: 首页 > 编程笔记 >

动态生成的DOM不会触发onclick事件的原因及解决方法

能文华
2023-03-14
本文向大家介绍动态生成的DOM不会触发onclick事件的原因及解决方法,包括了动态生成的DOM不会触发onclick事件的原因及解决方法的使用技巧和注意事项,需要的朋友参考一下

最近朋友在做一个项目的时候,遇到动态加载微博内容,然后点击“展开评论”后获取该微博的所有评论。这里使用了动态加载的<span mid='123456789′ class='get_comment'>点击加载评论</span>。

然后再写

$(“.get_comment).click(function(){

//响应事件逻辑

})

发现click事件并不会触发,使用控制台侦听也木有错误。百思不得其解时,

因为我在以前做搜狐家居商城的运费管理时,也曾遇到,因此将焦点落在html" target="_blank">动态加载上。

记得当时本人用的是行内事件,在动态加载时用的是行内事件。如 var oBtn = '<a onclick="Freight.delete_curr_citys();" href="javascript:void(0);">删除</a>'; 其实Freight为对象.delete_curr_citys为此对象的一个方法。

当然也可以使用jquery的live()函数,重写响应逻辑:

$(“.get_comment”).live(‘click', function() {
var mid = $(this).attr(“mid”);
alert(mid);
});

这时候,jquery可以响应span 的click事件了。这里用到live函数委派事件,主要用于动态生成的HTML的事件响应。关于live()函数的作用,它最直观的好处在于可以一直 “监听”客户端浏览器操作,对于新增的DOM节点也会有效,而不需要重新绑定。也许是因为这个“监听”可能会不断的去绑定、判断,会造成web应用性能问题,大家可以根据项目的复杂性选择性使用。关于live函数,这里有非常详细的阐述:

定义和用法

live() 方法为被选元素附加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。

通过 live() 方法附加的事件处理程序适用于匹配选择器的当前及未来的元素(比如由脚本创建的新元素)。

语法

$(selector).live(event,data,function)

参数 描述

event 必需。规定附加到元素的一个或多个事件。

由空格分隔多个事件。必须是有效的事件。 

data 可选。规定传递到该函数的额外数据。

function 必需。规定当事件发生时运行的函数

以上这篇动态生成的DOM不会触发onclick事件的原因及解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍关闭页面window.location事件未执行的原因及解决方法,包括了关闭页面window.location事件未执行的原因及解决方法的使用技巧和注意事项,需要的朋友参考一下 1、问题描述: JS中定义widow.location = function(),页面关闭时,logout()函数未执行。 2、问题原因: logout()中调用SOAPClient.invoke()方法,参

  • 本文向大家介绍MSSQL产生死锁的根本原因及解决方法,包括了MSSQL产生死锁的根本原因及解决方法的使用技巧和注意事项,需要的朋友参考一下 一、 什么是死锁 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等的进程称为死锁进程. 二、 死锁产生的四个必要条件 •互斥条件:指进程

  • 本文向大家介绍Java String.replace()方法"无效"的原因及解决方式,包括了Java String.replace()方法"无效"的原因及解决方式的使用技巧和注意事项,需要的朋友参考一下 首先我们来看个例子 运行结果是什么呢?我们先看看这个方法的api 返回一个新的字符串,用newChar替换此字符串中出现的所有oldChar 所以这里的结果为:输出结果是abcd 而不是fbcd,

  • 本文向大家介绍vue vantUI tab切换时 list组件不触发load事件的问题及解决方法,包括了vue vantUI tab切换时 list组件不触发load事件的问题及解决方法的使用技巧和注意事项,需要的朋友参考一下 最近由于公司项目需要,用vue写了几个简单的页面。用到了vantUI List 列表 瀑布流滚动加载,用于控制长列表的展示 当列表即将滚动到底部时,会触发事件并加载更多列表

  • 本文向大家介绍C#动态生成按钮及定义按钮事件的方法,包括了C#动态生成按钮及定义按钮事件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#动态生成按钮及定义按钮事件的方法。分享给大家供大家参考。具体实现方法如下: 1、后台生成input的button按钮 写入到界面中 2、后台回发拦截与处理 希望本文所述对大家的C#程序设计有所帮助。

  • 问题内容: 詹金斯似乎并没有自动提出需要从Gerrit进行审查的更改。 我们正在使用Gerrit触发器。 另外,如果我尝试手动触发一些操作,似乎什么也没发生。 Gerrit触发器管理区域中的“控件”似乎并不多…闪烁“正在启动”,“正在停止”或“正在重新启动” 有什么想法我做错了吗? 问题答案: 我只是遇到了同样的问题,这与我的工作中用于匹配分支的默认Gerritt设置有关。在工作中,在Gerrit