0

我动态生成一个这样的列表:

$("#list").append("<li><a class='touchable' id=" + results.rows.item(i).id + " href='#list' onclick='showDetailsList(" +  results.rows.item(i).id + ");'>" + results.rows.item(i).name + "</a></li>");

如您所见,我将“可触摸”类添加到链接中。我现在有:

$(document).on("taphold",".touchable",function(e){
    e.preventDefault();
    e.stopPropagation();
    $(this).simpledialog2({
        mode:"blank",
        headerText:"Image Options",
        showModal:false,
        forceInput:true,
        headerClose:true,
        blankContent:"<ul data-role='listview'><li><a href=''>Send to Facebook</a></li><li><a href=''>Send to Twitter</a></li><li><a href=''>Send to Cat</a></li></ul>"
    });
});

我添加了“e.preventDefault()”。但是当我点击链接几秒钟时,对话框会显示,但是当我释放点击时,它会自动跳转到另一个页面。

我希望可以在对话框中做出选择,而不是转到其他页面。我怎样才能做到这一点?

4

1 回答 1

1

我认为正在发生的是,当您释放点击时,该click事件将在链接上触发,您将跳转到另一个页面。您可以做的是将事件处理程序绑定click$(this)taphold 事件处理程序内部,这将防止事件冒泡。

所以像这样

$(this).one("click", function(e) { // one to only handle one (the next) click event
  e.preventDefault();
  e.stopPropagation();
});

在您的水龙头处理程序内部应该可以工作。

于 2013-09-05T09:14:56.210 回答