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

js 为动态添加的元素绑定事件,第1张

想必大家都有遇到过,DOM动态添加元素,你给它绑定的事件是不起作用的。目前有两种办法,为动态添加的元素绑定事件

⚠️ 动态添加的子元素一定要放在on()方法里面,并且on()方法里面的 childSelector 必须要是 selector 的子元素,否则动态添加的元素绑定的事件依旧无效

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

在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')

        }

    }})

WEB项目中,我们常常会碰到要动态对相应的对象添加事件,如下,有id="txtPrice"的文本框控件:

<div>

<input

type="text"

id="txtPrice"

name

=

"txtPrice"

value

=

"0"/>

<div>

现在我们为其动态添加一事件,JS核心代码如下:

document.getElementById("txtPrice").attachEvent('onblur',

function

(){alert('添加事件成功!')})

【补充】

有时候为了实现不同浏览器之前的兼容,我们会这样写:

Code

highlighting

produced

by

Actipro

CodeHighlighter

(freeware)http://www.CodeHighlighter.com/-->1

if(window.attachEvent)

{

document.getElementById("txtPrice").attachEvent('onblur',

function

(){alert('添加事件成功!')})

}

else

{

document.getElementById("txtPrice").addEventListener('onblur',

function

(){alert('添加事件成功!')},false)

}

以上这篇JS动态给对象添加事件的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11915638.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存