我的网页应用程序是专为iPad设计的。 我使用jQuery和jQuery UI来拖动屏幕上的元素。因为在iPad上,默认情况下无法拖动元素,所以我添加了这个库:
http://code.google.com/p/jquery-ui-for-ipad-and-iphone/
包括它,我可以在iPad上拖放元素,但也会出现问题。我在draggable元素上也有一个div与图像,它应该是可点击的。
所以我整合了这些线:
$(document).ready(function() {
$(".note").draggable();
$('.closebutton').click(function() {
alert("test");
});
});
问题是,包括拖动库,警报消息test
弹出两次或屏幕被冻结。
我在这里创建了一个完整的工作演示:
在普通的桌面浏览器上,例如Firefox 4 Beta和Safari,它可以正常工作,只需在x - delete图像上单击鼠标即可显示一条test
消息。在iPad上,我收到消息两次或屏幕冻结。
有人可以帮助我吗?非常感谢你提前和最诚挚的问候。
答案 0 :(得分:5)
这不是真正的回应,因为我不知道为什么你有两次。但是,如果您确定您的点击事件是应该附加到此按钮的唯一点击事件行为,您可以尝试解决方法;在绑定之前创建一个unbind(),这将删除任何先前的单击绑定(因此,如果这次运行多次,您将只获得一个事件):
$('.closebutton').unbind().click(function() { ...
或更好:
$('.closebutton').unbind('click').click(function() { ...
答案 1 :(得分:4)
我发现在点击时显示警告框时,事件会被触发两次。我已经设法通过使用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
});
答案 2 :(得分:0)
我不知道为什么,但如果我不使用alert
消息,它就会起作用。我创建了新元素,然后在iPad和桌面Safari上只调用一次。
答案 3 :(得分:0)
我只在iPad上看到这个问题,也许某些版本的webkit相关。 unbind对我有用,而且我也读过这个只有jquery代码在body html标签中才存在,如果它在头部不是问题。
答案 4 :(得分:0)
只是简单地避免点击的传播
$("tr").live('click',function() {
...
$( event.toElement ).one('click', function(e){ e.stopImmediatePropagation(); } );
});