Como desabilitar o comportamento padrão de uma âncora no jQuery Mobile (iOS)
Eu estou construindo um aplicativo para iPhone e iPad usando PhoneGap e jQM
<div class="ui-block-a">
<a id="btnLink" href="#pageID" data-role="button"></a>
</div>
e funciona bem, mas quando eu corro no dispositivo (não tentei o simulador) e pressiono um toque longo, recebo o menu padrão do iPhone para um link em um navegador normal para abrir ou copiar o link.
Como posso desativar esse recurso padrão no meu aplicativo?
Eu tentei isso sem sucesso:
$("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
});
se eu ligar em 'taphold' ainda ver o menu em um toque longo, mas depois que eu clico em cancelar vejo o log do console: ["evitando pressionar longamente", "taphold"]
$("a").bind('taphold', function(event) {
console.log(['preventing long press',event.type]);
event.preventDefault(); // long press menu still apear
});
se eu usar delegado em evento 'taphold' assim:
$("a").delegate('taphold', function(event) {
console.log(['preventing long press',event.type]);
event.preventDefault();
});
corrigirá o problema, mas não posso mais anexar nenhum evento, portanto nenhum dos meus botões funcionará depois disso.
$('#btnLink').bind("click", function() {
$.mobile.changePage('mypage', 'slide'); // won't fire any more because of the delegate before
});
Eu sei que o delegado vai aplicar em todos os elementos agora e no futuro, mas acho que estou chegando perto da resposta, mas ainda não.
desde já, obrigado