您当前的位置: 首页 >  jquery

JQuery:动态添加标签绑定事件

梁云亮 发布时间:2020-05-06 04:09:21 ,浏览量:3

说明

采用JQuery技术先获取页面元素,然后再在后面追加元素的时候(append),在下面用 $(selector) 获取刚刚添加的标签,发现怎么都获取不到。

之所以这样原因是因为页面已经将JS加载完毕,此时新增请求动态添加节点,自然获取不到。

动态添加的标签要事件委托才能获取到节点,具体解决办法:

  • 通过on绑定事件(注意使用on绑定事件时,hover无效,因为on的参数只能传一个函数)
  • live绑定:
  • delegate绑定:

语法: $(selector1).on(events,[selector2],[data],fn)

参数描述events一个或多个用空格分隔的事件类型和可选的命名空间selector2可选。一个选择器字符串,用以过滤选定的元素,该选择器的后裔元素将调用处理程序。如果选择是空或被忽略,当它到达选定的元素,事件总是触发。data可选。作为event.data属性值传递给事件对象的额外数据对象以供事件处理函数处理fn该事件被触发时执行的函数。 false值也可以做一个函数的简写,返回false

注意:

  • selector1 为动态添加节点的父级节点,请使用非动态添加的父级节点,不然同样获取不到。
  • 请委托给直接上级非动态添加节点,不要扩大范围,否则可能会造成一次点击多次执行情况!
示例
DOCTYPE html>

    
        
        Title
    
    
        btn1
        
        

        
        
            $("#btn1").click(function () {//能正常触发事件
                alert("btn 111");
            });
            $(function () {
                $("#sth2").append('btn2');
                $("#sth3").append('btn3');
            });

            $("#btn2").click(function () {//不能正常触发事件
                alert("btn 222");
            });
            $("#sth3").on("click","#btn3",function () {//能正常触发事件
                alert("btn 333");
            });
        
    

关注
打赏
1688896170
查看更多评论

梁云亮

暂无认证

  • 3浏览

    0关注

    1121博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0499s