【问题标题】:unable to use jquery .on() to pass data through function无法使用 jquery .on() 通过函数传递数据
【发布时间】:2017-08-16 06:19:45
【问题描述】:

我已经按照this 链接将数据传递给动态创建的元素的点击事件。但是,它不起作用。

for(var i=0; i<data.length; i++) {
    var meterDiv = $("<div></div");
    meterDiv.attr('class', "container-fluid");
    var meterData = data[i].stompNumber + "<br/>" + data[i].stompName + "<br/>" + data[i].postId; 
    meterDiv.html(meterData);
    var postId=data[i].postID;
    meterDiv.on("click",  {postid: postId}, function(event) {
        parkedMeter(event);
        console.log("paked at : " + event.data.postid);
    })

    $("#meterInfo").append(meterDiv); 
}

paked at 在控制台上是 undefined。和我的parkedMeter一样:

function parkedMeter(event) {
  console.log("postid " + event.data.postid);
}

【问题讨论】:

  • minimal reproducible example,因为这是你的代码sn-p无法运行,我们不知道数据变量包含什么,也不知道parkedMeter函数声明的方式和位置。跨度>
  • .on() 方法似乎使用得当:问题是,postId 是什么:你确定它被正确读取了吗?您似乎有一个错字:应该是 var postId = data[i].postId 而不是 var postId = data[i].postID。您是否尝试过控制台记录 data[i] 的内容?然后,您将获得可以使用的有效密钥列表。
  • 特里的评论是正确的。我有拼写错误。谢谢特里!!

标签: javascript jquery


【解决方案1】:

根据jquery documentation

关于函数参数 1) 事件 2) 选择器 3) 数据对象 4) 回调函数/处理程序。

由于您给定的代码缺少选择器,您应该添加任何选择器

 meterDiv.on("click","Selector Here" , {postid: postId}, function(event) {
    parkedMeter(event);
    console.log("paked at : " + event.data.postid);
})

【讨论】:

  • 选择器不是必需的,可以省略,根据 jQuery 文档。
猜你喜欢
  • 1970-01-01
  • 2020-07-12
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 2016-11-12
  • 2022-01-21
  • 1970-01-01
  • 2014-07-04
相关资源
最近更新 更多