Cómo deshabilitar el comportamiento predeterminado de un ancla en jQuery Mobile (iOS)
Estoy creando una aplicación para iPhone y iPad usando PhoneGap y jQM
<div class="ui-block-a">
<a id="btnLink" href="#pageID" data-role="button"></a>
</div>
y funciona bien, pero cuando lo ejecuto en el dispositivo (no probé el simulador) y presiono prolongadamente, obtengo el menú predeterminado de iPhone para un enlace en un navegador normal para abrir o copiar el enlace.
¿Cómo puedo deshabilitar esta característica predeterminada en mi aplicación?
Intenté esto sin éxito
$("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
});
si me encuadro en 'taphold', aún veo el menú con una presión prolongada, pero después de hacer clic en cancelar, veo el registro de la consola: ["prevenir pulsación larga", "taphold"]
$("a").bind('taphold', function(event) {
console.log(['preventing long press',event.type]);
event.preventDefault(); // long press menu still apear
});
si uso delegado en el evento 'taphold' como este:
$("a").delegate('taphold', function(event) {
console.log(['preventing long press',event.type]);
event.preventDefault();
});
solucionará el problema, pero ya no puedo adjuntar ningún evento, así que ninguno de mis botones funcionará después de eso.
$('#btnLink').bind("click", function() {
$.mobile.changePage('mypage', 'slide'); // won't fire any more because of the delegate before
});
Sé que el delegado se aplicará a todos los elementos ahora y en el futuro, pero creo que me estoy acercando a la respuesta, pero aún no.
Gracias por adelantado