今天小编给大家分享一下jquery动态生成元素怎么绑定事件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
项目里有个需求,需要动态添加dom元素(button),并可以实现点击事件。这个事件可以用onclick属性添加在元素里,也可以通过js查找dom元素注册点击事件,本着表现与业务分离的原则,我用js注册元素的点击事件。
$(row).find("td:last-child").append(`<div ><button id="` +
index + `sbutton" name="send" class="btn btn-lg
btn-primary">指派</button><button id="` + index +
`hbutton" name="ignore" class="btn btn-lg btn-primary">忽略</button></div>`
);
$(index + "sbutton").click(function(){
sendEvent(data);
});
但是跑起来后,这个事件是没有用的,原因是什么呢?
因为这是动态添加的元素,在代码执行到注册事件这一步时,添加的dom元素还没有在界面渲染完成,这时,注册事件是无效的。
如何平衡这个矛盾,即要用js注册实现表现与业务分离,又要实现元素的事件注册?
下面就是解决方案:
$(document).on('click', "#" + index + "sbutton", function () {
sendEvent(data);
});
on() 和 click() 二者在绑定静态控件时没有区别,但是如果面对动态产生的控件,只有 on() 能成功的绑定到动态控件中,on其实整合了delegate的委托功能,可以实现这种委托绑定事件。
以上就是“jquery动态生成元素怎么绑定事件”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。