在js中怎么给动态生成的元素绑定事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在js中怎么给动态生成的元素绑定事件相关的知识,希望对你有一定的参考价值。

如题,比如通过ajax请求到了数据,然后在dom中动态把数据加入到列表中,怎么给列表添加事件?在哪里加有效?

最好是在元素生成的时候就加上事件,不然的话比较麻烦。

在jquery中,你也可以用live()和delegate()这样的方法绑定元素,是实时监听的。

但是最好还是在元素生成的时候就加上事件:

$('#btn').bind('click', function(event) 
    /* Act on the event */
    $("<li>Hello</li>").appendTo("#list").bind('click', function(event) 
      /* Act on the event */
      console.log($(this).text());
    );
    
  );

在mootools中对应的方法:

// Creating an new anchor with an Objectvar myAnchor = new Element('a', 
    href: 'http://mootools.net',
    'class': 'myClass',
    html: 'Click me!',
    styles: 
        display: 'block',
        border: '1px solid black'
    ,
    events: 
        click: function()
            alert('clicked');
        ,
        mouseover: function()
            alert('mouseovered');
        
    );

参考技术A 请求回来的时候直接给上,比如我回来的就是<a onclick="hs()"></a> .而不是<a></a>.然后获取a .因为通过DOM找不到回来的元素

js如何为动态添加进来的a超级链接元素添加click事件函数

动态添加进页面的链接里都没有写 onclick=什么的,在一段代码里如何为动态添加进来的a超级链接元素都加上onclick事件,以及处理代码?
jquery可以.live这个知道。如何不用jquery只用js代码实现

参考技术A $("#id").append($("a").click(function()
//点击事件
)
);

只用javascript:
把事件与标签一起innerHTML在元素里搞定,比如:

document.getElementById('sasd').innerHTML="<a href='#' onclick='alert(Date().toLocaleString());' />";追问

只用javascript:而且不能在标签里加事件

追答

document.getElementById('sasd').innerHTML="是打发斯蒂芬";

document.getElementById('sasd').getElementsByTagName('a')[0].onclick='alert(Date().toLocaleString())';

或者你可以在生成A标签时添加类名或ID,然后用document.getElementsByClassName(如果这个方法浏览器不支持的话,那你就自己写下吧)或document.getElementById

本回答被提问者和网友采纳
参考技术B 至少2种方法:
1、document.getElementById("a的ID").onclick = method1;
2、
var aObj = document.getElementById("a的ID");

if (window.addEventListener) //Mozilla系列
aObj.addEventListener('click', method1, false);
else if (window.attachEvent) //IE
aObj.attachEvent('onclick', method1);

method1为你定义的方法。

以上是关于在js中怎么给动态生成的元素绑定事件的主要内容,如果未能解决你的问题,请参考以下文章

js为动态生成/添加的元素绑定事件

js给动态添加的元素绑定事件

jQuery动态创建的元素为啥不能绑定事件

关于动态生成dom绑定事件失效的原因

jQuery给动态添加生成的元素绑定事件的方法

为啥我js动态添加的a标签相应的js会失效