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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM