So deaktivieren Sie das Standardverhalten eines Ankers in jQuery Mobile (iOS)
Ich erstelle eine App für iPhone und iPad mit PhoneGap und jQM
<div class="ui-block-a">
<a id="btnLink" href="#pageID" data-role="button"></a>
</div>
und es funktioniert gut, aber wenn ich es auf dem Gerät laufen lasse (den Simulator nicht ausprobiert habe) und lange drücke, erhalte ich das Standard-iPhone-Menü für einen Link in einem normalen Browser, um den Link zu öffnen oder zu kopieren.
Wie kann ich diese Standardfunktion in meiner App deaktivieren?
Ich habe es erfolglos versucht:
$("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
});
Wenn ich auf 'taphold' binde, wird das Menü bei langem Drücken immer noch angezeigt, aber nachdem ich auf Abbrechen geklickt habe, wird das Konsolenprotokoll angezeigt: ["Langes Drücken verhindern", "taphold"]
$("a").bind('taphold', function(event) {
console.log(['preventing long press',event.type]);
event.preventDefault(); // long press menu still apear
});
Wenn ich "delegate on taphold" wie folgt benutze:
$("a").delegate('taphold', function(event) {
console.log(['preventing long press',event.type]);
event.preventDefault();
});
behebt das Problem, aber ich kann keine Ereignisse mehr anhängen, sodass danach keine meiner Schaltflächen mehr funktionieren.
$('#btnLink').bind("click", function() {
$.mobile.changePage('mypage', 'slide'); // won't fire any more because of the delegate before
});
Ich weiß, dass sich der Delegierte jetzt und in Zukunft auf alle Elemente anwenden wird, aber ich glaube, ich komme der Antwort schon sehr nahe, aber noch nicht.
Danke im Voraus