zoukankan      html  css  js  c++  java
  • jquery新增元素on click无效

    使用jquery on click时出现的情况,由于下面的 view_qrocode 按钮是通过js新增加的

    <td>
        <a class="btn btn-primary view_qrcode"  value="{%=file.url%}">
            <i class="glyphicon glyphicon-qrcode"></i>
               <span>二维码</span>
        </a>
    </td>
    

      在绑定 on click事件时,点击按钮不起作用

        $(".view_qrcode").on('click',function(){
            var str=$(this).attr('value');
            // //清空二维码
            $("#erWeiMa").empty();
            //生成二维码
            $("#erWeiMa").qrcode({
                render:"table",
                text:utf16to8(str)
            });
        });
    

      

    后来考虑到这个元素是新增的,所以使用代理方法 delegate(), click事件可以用了。 注意:事件需要绑定到它的父级或者body

        $("body").delegate(".view_qrcode",'click',function(){
            var str=$(this).attr('value');
            // //清空二维码
            $("#erWeiMa").empty();
            //生成二维码
            $("#erWeiMa").qrcode({
                render:"table",
                text:utf16to8(str)
            });
        });
    

      

    在jQuery 3.0中,.delegate()已被标记为弃用。从jQuery 1.7开始,它已经被.on()方法取代。所以我们不建议使用该方法。但是,对于早期版本,它仍然是使用事件代理(委派)最有效的方式。事件绑定和代理(委派)的更多信息请查看.on()方法。

    所以还是用on()方法,仍然要绑定到父级或者 body

     $("body").on('click',".view_qrcode",function(){
            var str=$(this).attr('value');
            // //清空二维码
            $("#erWeiMa").empty();
            //生成二维码
            $("#erWeiMa").qrcode({
                render:"table",
                text:utf16to8(str)
            });
        });
    

      

  • 相关阅读:
    在Visual Studio中怎样快速添加代码段
    18个不常见的C#关键字,您使用过几个?
    C# 非常好用的组元Tuple
    C# List根据另一个List集合或数组排序
    Expression 核心操作符、表达式、操作方法
    如何避免频繁创建临时对象
    C# 23种设计模式
    C# 23种设计模式
    Api Cloud官方日期类型转换
    sql server 保留小数(续A)
  • 原文地址:https://www.cnblogs.com/yuanlipu/p/7251450.html
Copyright © 2011-2022 走看看