【发布时间】:2014-04-24 21:44:38
【问题描述】:
我这里有一些代码:
$(document).on("click", ".updateRecordButton", function(event){
var rowid = $(this).parents("li").data("rowid");
$("#displayOptions").popup('open', { x: event.pageX, y: event.pageY });
$(document).on("click", ".deleteRecord", function(event){
deleteRecord(rowid);
});
});
还有deleteRecord函数:
function deleteRecord(rowid){
db.transaction(function(transaction) {
transaction.executeSql('DELETE FROM Table1 WHERE "Id" = "'+rowid+'"'
,nullHandler);
});
第一次点击是当我点击列表元素时。这会提示一个带有删除按钮的弹出窗口。第二个 onclick 是删除按钮,然后提示 deleteRecord 函数。问题是,在我删除一个列表元素后,deleteRecord 函数似乎触发了两次。如果我发出警报(rowid);删除第一个元素后,它会给出我删除的前一个列表元素的 id 以及我现在要删除的那个。
谁能告诉我为什么它会发射两次?我做了一些研究并尝试了 preventDefault 和 preventPropagation 但这些似乎不起作用。
当我删除一个列表项时,它会从表中删除与其关联的行。然后清空列表视图并重新列出结果。事情是,触发两次的事件也搞砸了,出于某种原因,我尝试删除的第二个列表元素仅从数据库中删除,但保留在页面上,并生成了其他列表元素的副本。我真的不知道发生了什么,任何帮助将不胜感激。
如果需要,这是 rowid 数据的来源:
transaction.executeSql('SELECT * FROM Table1', [],
function(transaction, result) {
if (result != null && result.rows != null) {
for (var i = 0; i < result.rows.length; i++) {
var row = result.rows.item(i);
$('#records').append('<li data-rowid="' + row['Id'] + '"><a href ="#" class="updateRecordButton">'+ 'Test: ' + row['colum1'] + '</a></li>');
}
$("#records").listview("refresh");
}
},errorHandler);
},errorHandler,nullHandler);
【问题讨论】:
-
我猜你不希望第一个点击处理程序中的第二个点击处理程序。
标签: javascript jquery sqlite onclick