javascript/jquery 数组交互在 .on ("click"之后不起作用)

标签 javascript jquery ajax arrays

我在 ajax 交互方面遇到问题

var json = [
    { firstName: "John", lastName: "Doe" }, 
    { firstName: "Anna", lastName: "Smith" }, 
    { firstName :"Peter", lastName: "Jones" }
];

$(".container").append("<ul>");

// cycle through array and select each object in it
$.each(json, function(idx, object) {    
    $(".container").append("<li>" + object.firstName + " " + object.lastName + '<input type="submit" value="del"><input type="hidden" value="' + idx + '"></li>');
});

$(".container").append("</ul>");

$("li").on("click", "input", function() {
    var idx = $(this).next().val();

    json.splice(idx, 1);

// clear container
$(".container").text("");
$(".container").append("<ul>");

// cycle through array and select each object in it
$.each(json, function(idx, object) {    
    $(".container").append("<li>" + object.firstName + " " + object.lastName + '<input type="submit" value="del"><input type="hidden" value="' + idx + '"></li>');
});

$(".container").append("</ul>");

这是一个fiddle

如果我单击“删除”,一切都会按预期进行。但如果我想删除第二项,则没有任何响应。

谁能给我解释一下为什么会这样?提前致谢!

最佳答案

当您清除容器时,附加了单击事件处理程序的 li 元素将从屏幕上删除。

您使用 .on() 几乎正确地获得了事件委托(delegate)但您将事件添加到更新后将不再出现在屏幕上的元素(li)。

尝试将事件附加到容器,更改为:

 $(".container").on("click", "li input", function() {

Working Fiddle

关于javascript/jquery 数组交互在 .on ("click"之后不起作用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16499599/

相关文章:

javascript - 为什么我的服务器在浏览器上显示错误“"This site can' t be returned ERR_UNSAFE_PORT”,即使它在终端上完美运行?

javascript - 对象不支持此属性或方法 btoa

jquery - Sharepoint Angular REST 添加项目产量 400(错误请求)

javascript - 如何从异步调用返回响应?

具有键值对的 Javascript 对象,如何将每一对作为单独的对象分开?

php - 在传递 PHP 变量时调用 javascript 函数

jquery - 获取JQuery中的表id

javascript - 按元素位置显示大 div 的一小部分

javascript - 带有 ajax 的 PHP、jQuery、HTML 表单无法正常工作

php - AJAX 调用之间的持久 Mysql 连接?