• 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)
            });
        });
    

      

  • 相关阅读:
    第05组 Beta版本演示
    第05组 Beta冲刺(4/4)
    第05组 Beta冲刺(3/4)
    第05组 Beta冲刺(2/4)
    第05组 Beta冲刺(1/4)
    第05组 Alpha事后诸葛亮
    第05组 Alpha冲刺(4/4)
    第05组 Alpha冲刺(3/4)
    第05组 Alpha冲刺(2/4)
    300iq Contest 3 C. Cells Blocking
  • 原文地址:https://www.cnblogs.com/yuanlipu/p/7251450.html
Copyright © 2020-2023  润新知