由于taphold对话框,防止href

时间:2013-09-05 07:58:42

标签: javascript jquery jquery-mobile cordova tap

我动态生成如下列表:

$("#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()'。但是,当我点击链接几秒钟时,对话框会显示,但是当我发布点击时,它会自动跳转到另一页。

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

1 个答案:

答案 0 :(得分:1)

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

这样的事情

$(this).one("click", function(e) { // one to only handle one (the next) click event
  e.preventDefault();
  e.stopPropagation();
});
你的taphold处理程序应该工作。