我调用了一个远程 Web 服务,该服务返回一个项目列表,然后在网页上列出,1 分钟后发送一个新列表,我需要获取旧列表,找出哪些项目是新的,然后修改名单。
该过程中的第 2 步是生成所有当前列出的项目的列表,但是因为它们是通过 AJAX 加载的,所以我不能做一个简单的 $('#items').each(); 我需要使用“开启”功能。
on 函数使用事件,我似乎无法解决/找出如何让它“开启”......请求?我目前的做法似乎很荒谬:
$.ajax({
url: url,
success: function(data) {
$('#items .item').on("click", function() {
console.log("an item");
});
$('#items .item').trigger("click");
}
});
我正在伪造“点击”事件,以便“打开”有一些东西可以听,但这似乎很奇怪。
在不伪造点击事件的情况下使用“on”与项目交互的正确方法是什么,或者伪造点击事件是唯一的方法?
编辑澄清:
步骤 1. 使用 HTML 加载网页:
<div id="content">
<div id="items">
</div>
</div>
第 2 步。 10 秒后,对 items.php 进行 AJAX 调用,它以项目的 JSON 表示进行响应,然后我使用 .each 将它们插入到页面中,如下所示:
$.each(data, function(key, value) {
$('#content').append('<div class="item">'+value.title+'</div>');
});
所以现在看起来像
<div id="content">
<div id="items">
<div class="item">title</div>
<div class="item">title</div>
</div>
</div>
第 3 步。 60 秒后,再次对 items.php 进行另一个 AJAX 调用,它以新项目的 JSON 表示形式响应。此时,我需要通过标题获取当前列出的项目(#items 中的每个 .item),并对新标题进行一些比较。
$('#items .item').each(function(){
// doesn't work because the items aren't available
});
我的谷歌搜索告诉我我需要使用“live”,它已被弃用,现在使用“on”代替它......
我需要一种方法来遍历先前加载的元素。
最终编辑:
问题不存在,看起来我打错了 div 的名称,匆忙中我认为问题是我以前经历过的:需要 on/live。许多以前的 Stack Overflow 问题都讨论了使用 Javascript 插入 HTML 进行实时/在线的必要性,但它似乎是专门针对用户交互的。Javascript 可以很好地与加载的项目进行交互,但是 jquery 不能在没有 live/on 的情况下对用户与这些项目的交互起作用。
我的错。