jquery动态渲染绑定点击事件不生效

原因:动态添加的HTML元素是在CSS,JS代码加载完成后再渲染的HTML页面。浏览器解析这些通过ajax请求到后台返回的数据,再根据返回的结果动态生成HTML页面时,这时绑定事件的标签元素还没有生成。而普通的点击click事件只能绑定静态元素。用on方法支持动态绑定元素。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>jquery动态渲染绑定点击事件不生效</title>
  </head>
  <body>
    <ul class="index-module"></ul>
    <script>
      var url = "http://10.11.130.66:6666/";
      var storeid = "CS002";
      var mode=""//置空
      var page = 1;页数
      var limit = 10;条数
      // 发送ajax请求
      $.ajax({
        type: "GET",
        url: url + "ChuZhi/GetPay",
        async: true, //是否异步
        data: {
          storeid: storeid,
          page: page,
          limit: limit,
        },
        success: function (res) {
          if (res.code == 0) {
            var item = res.data;
            for (var i in item) {
              mode += `<li 
				data_GRADEID="${item[i].BILLID}" 
                @click="cresment(item[i].BILLID)">
				<p><label for="">单号:</label>
				<span >${item[i].BILLID}</span></p>			
				</li>`;}}
          $(".index-module").html(mode);
        },
      });
      //   问题一点击事件不生效
      function cresment(params) {
        console.log(GRADEID);
      }
       </script>
  </body>
</html>

解决办法一  使用普通绑定事件

     $(".index-module li").click(function () {
        let GRADEID = $(this).attr("data_GRADEID");
        console.log(GRADEID);
      });

解决办法二  将普通事件改为.on()委托事件

    $("body").on("click", ".index-module li", function () {
        let GRADEID = $(this).attr("data_GRADEID");
        console.log(GRADEID);
      });

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值