虽然我看过其他类似的帖子,但我无法找到问题的确切原因/解决方案,所以我希望我不只是重新发布其他人提出的问题:
我最近发现在jquery中,.live()允许将我的函数附加到动态添加到页面中的项目。所以我有一个项目列表,我点击删除使用get函数,使用href作为get变量,然后从我的数据库中删除该项目并刷新列表。
因此,使用live函数,我设法将相同的函数添加到刷新列表中。但问题是指定要删除哪个项的get变量似乎停留在最后一个数字上。
所以如果我删除第13项,那么列表刷新,我尝试删除说第15项,似乎(来自firebug)get变量再次尝试删除第13项而不是15
对于要遵循的混乱代码道歉:$(document).ready(function() { $('.delav').live('click', function(e) { e.preventDefault(); var pager = $(this).attr("href"); $("#dialog2").dialog({ autoOpen: false, width: 600, modal:true, buttons : { "Confirm" : function() { $('#ava_list').html("Loading.."); var pai =$('#epa_id').val(); $.get("/_includes/functions.php", { table: "availability", pa: pai,delattr: pager} ,function(data) {$('#ava_list').html(data);}); $(this).dialog("close"); }, "Cancel" : function() { $(this).dialog("close"); } } }); $("#dialog2").dialog("open"); }); });
答案 0 :(得分:3)
看起来你有多个ID为'epa_id'的输入元素。如果是这种情况,您将需要删除重复的ID并使用DOM遍历来获取相对于所单击的.delav
的正确元素。
对于特定的解决方案,我们需要查看您的标记。
答案 1 :(得分:2)
而不是使用$ .live(),JQuery引用建议使用委托
$('.highlevelclasshere').delegate('click', function(e) {
e.preventDefault();
var pager = $(this).attr("href");
$("#dialog2").dialog({
autoOpen: false,
width: 600,
modal:true,
buttons : {
"Confirm" : function() {
$('#ava_list').html("Loading..");
var pai =$('#epa_id').val();
$.get("/_includes/functions.php", { table: "availability", pa: pai,delattr: pager} ,function(data) {$('#ava_list').html(data);});
$(this).dialog("close");
},
"Cancel" : function() {
$(this).dialog("close");
}
}
});
$("#dialog2").dialog("open");
});