【发布时间】:2012-05-23 06:52:02
【问题描述】:
我正在使用 PhoneGap 和 jQM 为 iPhone 和 iPad 构建应用程序
<div class="ui-block-a">
<a id="btnLink" href="#pageID" data-role="button"></a>
</div>
它运行良好,但是当我在设备上运行它(没有尝试模拟器)并长按时,我会在普通浏览器中获得默认的 iPhone 菜单以打开或复制链接。
如何在我的应用中禁用此默认功能?
我尝试了这些但没有成功:
$("a").click(function(event) {
event.preventDefault(); // long press menu still apear
});
$("a").bind('click',function(event) {
console.log(['preventingclick',event.type]);
event.preventDefault(); // long press menu still apear
});
如果我在“taphold”上绑定,我仍然会在长按时看到菜单,但在单击取消后,我会看到控制台日志:["preventing long press","taphold"]
$("a").bind('taphold', function(event) {
console.log(['preventing long press',event.type]);
event.preventDefault(); // long press menu still apear
});
如果我在这样的“taphold”事件中使用委托:
$("a").delegate('taphold', function(event) {
console.log(['preventing long press',event.type]);
event.preventDefault();
});
会解决这个问题,但我不能再附加任何事件,所以在那之后我的按钮都不起作用了。
$('#btnLink').bind("click", function() {
$.mobile.changePage('mypage', 'slide'); // won't fire any more because of the delegate before
});
我知道委托现在和将来都会应用于所有元素,但我想我已经接近答案了,但还没有。
提前致谢
【问题讨论】:
标签: jquery jquery-mobile cordova