Javascript jQuery-click事件在iPad上被调用两次

Javascript jQuery-click事件在iPad上被调用两次,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我为iPad设计的web应用程序有问题。 我使用jQuery和jQuery UI在屏幕上拖动元素。因为在iPad上,默认情况下无法拖动元素,所以我添加了以下库: 包括它,我可以在iPad上拖放元素,但也会出现问题。我在Dragable元素上还有一个div和一个图像,应该是可点击的 所以我把这些线整合起来: $(document).ready(function() { $(".note").draggable(); $('.closebutton').click(function

我为iPad设计的web应用程序有问题。 我使用jQuery和jQuery UI在屏幕上拖动元素。因为在iPad上,默认情况下无法拖动元素,所以我添加了以下库:

包括它,我可以在iPad上拖放元素,但也会出现问题。我在Dragable元素上还有一个div和一个图像,应该是可点击的

所以我把这些线整合起来:

$(document).ready(function() {
    $(".note").draggable();
    $('.closebutton').click(function() {
        alert("test");
    });
});
​ 问题是,包括拖动库,警报消息
test
会弹出两次或屏幕冻结

我在这里创建了一个完整的工作演示:

在普通的桌面浏览器上,如Firefox4Beta和Safari,它可以工作,用鼠标点击x-delete图像,只会显示一条
test
消息。在iPad上,我收到两次信息,否则屏幕就会冻结


有人能帮我吗?提前非常感谢并致以最良好的问候。

这并不是一个真正的回复,因为我不知道你为什么要回复两次。但是,如果您确定您的单击事件是应附加到此按钮的唯一单击事件行为,则可以尝试解决方法;在绑定之前创建一个unbind(),这将删除以前的所有单击绑定(因此,如果多次运行,则只会得到一个事件):

或者更好:

$('.closebutton').unbind('click').click(function() { ...

这不是一个真正的回应,因为我不知道为什么你会有两次。但是,如果您确定您的单击事件是应附加到此按钮的唯一单击事件行为,则可以尝试解决方法;在绑定之前创建一个unbind(),这将删除以前的所有单击绑定(因此,如果多次运行,则只会得到一个事件):

或者更好:

$('.closebutton').unbind('click').click(function() { ...

我不知道为什么,但如果我不使用
alert
消息,它就会工作。我创建新元素,然后在iPad和桌面Safari上只调用一次。

我不知道为什么,但如果我不使用
警报
消息,它就会工作。我创建新元素,然后只在iPad和桌面Safari上调用一次。

我只在iPad上看到这个问题,可能是与webkit相关的某个版本。解除绑定对我来说很有效,我还读到,只有jquery代码在body html标记中,如果它在head中,那么它才存在,这不是问题。

我只在iPad上看到这个问题,可能是与webkit相关的某个版本。解除绑定对我来说是有效的,我还了解到,只有jquery代码在body html标记中,如果它在head中,这不是问题。

我发现在单击显示警报框时,事件会触发两次。通过使用setTimeout来显示警报框,我成功地克服了这个问题

$("#myButton").unbind("click").click(function () {
   // Have to use a setTimeout else on iPhone the alert may appear twice in certain scenarios
   setTimeout(function () {  alert('The message'); }, 300);
   return false;  // Return false to prevent href being followed
});

我发现,当单击显示警报框时,事件会触发两次。通过使用setTimeout来显示警报框,我成功地克服了这个问题

$("#myButton").unbind("click").click(function () {
   // Have to use a setTimeout else on iPhone the alert may appear twice in certain scenarios
   setTimeout(function () {  alert('The message'); }, 300);
   return false;  // Return false to prevent href being followed
});

只是简单地避免点击的传播

$("tr").live('click',function() {

        ...

        $( event.toElement ).one('click', function(e){ e.stopImmediatePropagation(); } );
    });

只是简单地避免点击的传播

$("tr").live('click',function() {

        ...

        $( event.toElement ).one('click', function(e){ e.stopImmediatePropagation(); } );
    });

不工作,我还收到两条警告信息。。。我认为这是因为拖动库还处理单击/点击事件,并调用了两次单击函数。不起作用,我还收到了两条警告消息。。。我认为这是因为拖动库还处理click/tap事件,并调用click函数两次。