AJAX请求完数据,动态填充表格,表格中有按钮。
$('#wh_InOut>tbody').append('<tr>'
                                 + '<td>' + this.Ower + '</td>'
                              
                                 + '<td>' + this.Region + '</td>'
                                 + '<td class="text-right">'
                                 + '<button  onclick="clickWh_InOut(event);" data-ower="' + this.Ower + '"   data-epc="' + this.EPC + '"  data-status="' + this.Status + '"  class="wh_InOut_Bt  btn-info btn btn-xs" data-toggle="modal" data-target="#myModalWHInOut">' + (this.Status === 0 ? '你好' : '不好') + '</button>'
                                 + '</td>'
                                 + '</tr>');
                    });用” $('.wh_InOut_Bt').click“不行,因为Button是Ajax请求回来,手动添加的HTML元素,$('.wh_InOut_Bt')获得不了元素。如果用onclick="clickWh_InOut(event);"事件,然后在$(function () {})中定义 var clickWh_InOut = function (event) {})定义一个函数,却提示“”WHInOut.aspx:1 Uncaught ReferenceError: clickWh_InOut is not defined
    at HTMLButtonElement.onclick (WHInOut.aspx:1)“”
为什么呢???  之前解决过这个问题,忘记了。求大师指教。

解决方案 »

  1.   

    代理 自己查下delegate
      

  2.   

    $('.wh_InOut_Bt').on('click', clickWh_InOut); 这样手动绑定了一下搞定了
      

  3.   

    原因是,绑定事件的时候,你还没有生成元素,选不到,所以没有绑定事件,
    方法1.
    在回调函数里面绑定事件,也就是放在生成html的代码后面
    方法2,delegate
    事件委托,就是为将来(现在还不存在的dom)绑定事件
      

  4.   


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>show</title>
    </head>
    <body>
    </body>
    </html>
    <script src="js/jquery.min.js"></script>
    <script>
    //先绑定事件
        $("body").delegate("button","click",function () {
            alert(1);
        })
    //后添加元素
        $("body").append("<button>ss</button>");
    </script>
      

  5.   

    $("#wh_InOut").on("click", ".wh_InOut_Bt", function(event){  });
      

  6.   


    事件委托该怎么写? 大师?$("#wh_InOut").on("click", ".wh_InOut_Bt", function(event){  });