我的侧栏中有一个小方框,上面有ajax。我有2个ajax函数:一个添加项目到列表,第二个删除它们,如果用户点击删除按钮。我的html是一个简单的无序列表,如下所示:
<ul id="listaruta" class="lista">
<li>Item</li>
<li>Item</li>
</ul>
每当我调用这两个函数中的任何一个时,它们都会用更新的函数替换ul列表(在插入或删除后从数据库中选择项目)。它们工作正常,直到我想在将项目插入列表后立即删除。
我的ajax插入功能(另一个非常相似):
var valor=$("#alcrearuta").attr('class');
$("#alcrearuta").click(function(){
$.ajax({
type: "GET",
url: "../ajax/ruta.php",
data: "url=" + valor,
dataType: 'html',
success: function(data) {
$("#listaruta").html(data);
}
});
});
我的ruta.php文件为我提供了另一个ul列表,其结构与原始列表相同,只是更新了项目。
据我所知,由于我通过我的ajax函数更新ul,另一个函数不知道列表已更新,它只“记住”旧列表,所以它什么都不做。如果我刷新页面,它将删除没有问题。我猜这可以通过使用live()来解决?但我不知道......
编辑:好的,所以现在我可以让我的ajax调用工作,除了我更新后立即删除,我传递给ruta.php文件的值(这个变量将帮助我找到该字段我需要从数据库中删除)将被设置为'undefined'给我一个类似的查询:从poi中选择id,其中url ='undefined'同样,如果我重新加载,它将起作用。我对ajax函数所做的更改是:
$("#alcrearuta").live('click',function(){
$.ajax({
....
});
});
答案 0 :(得分:2)
问题是您在请求开头保存属性的值,您应该将其保存在click事件中:
$("#alcrearuta").click(function(){
var valor=$(this).attr('class');
$.ajax({
type: "GET",
url: "../ajax/ruta.php",
data: "url=" + valor,
dataType: 'html',
success: function(data) {
$("#listaruta").html(data);
}
});
});
希望有所帮助。