javascript - 与 Ajax 循环中的 onClick 不起作用

标签 javascript jquery ajax loops

我在下面有这个功能。这是一个查看项目列表的简单循环。对于每个项目,它都会进行一个 NeDB 查询(这里无关紧要,只要考虑它作为 Ajax 函数工作),检索与该项目对应的任务,然后显示任务和一个编辑按钮。

function myFunction() {
  console.log('Work');
}

$.each(projects, function( index, project ) {
  // tasks.find takes 100ms, it's like an Ajax request
  tasks.find({}, function (err, tasklist) {
    $('#my-list').append('<li>Edit</li>');       
  });
});

我希望当我点击“编辑”时,它会运行 myFunction()。

所以通常,我会像这样使用点击:

function myFunction() {
  console.log('Work');
}

$.each(projects, function( index, project ) {
  // tasks.find takes 100ms, it's like an Ajax request
  tasks.find({}, function (err, tasklist) {
    $('#my-list').append('<li>Edit</li>');
    $('#my-list li').on('click', function(){
      myFunction();
    }
  });
});

问题是点击函数在一个循环中,所以它为循环的每次迭代创建函数,所以它打印“工作”的次数与项目的次数一样多。

这个我也试过

$('#my-list').append('<li onClick="myFunction()">Edit</li>');

但是它不识别我的函数

解决方案是什么?

最佳答案

我们应该只听 click事件 1 <li>元素

function myFunction() {
  console.log('Work');
}

$.each(projects, function( index, project ) {
  // tasks.find takes 100ms, it's like an Ajax request
  tasks.find({}, function (err, tasklist) {
    var $newLi = $('<li>Edit</li>');
    $newLi.appendTo('#my-list');
    $newLi.on('click', function(){
      myFunction();
    }
  });
});

希望这可以帮助:)

关于javascript - 与 Ajax 循环中的 onClick 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46310795/

相关文章:

JavaScript 套接字连接

javascript - 如何将ajax代码转换为php

c# - 在请求正文中而不是在查询字符串中发送参数

javascript - 如何调整右侧垂直轴的对齐方式?

javascript - 在 Mongodb 中搜索和替换?

php - AJAX 数组与 MySQL 表交互时出现问题

javascript - 使用 jQuery 更改值

javascript - 将 Json 传递给 karate-config.js 文件

javascript - 如何创建过滤器搜索以从表中的两列中搜索数据?

c# - string.format 中的系统格式异常