タップホールド イベントの処理で深刻な問題が発生しています。現時点では、この問題は IOS でのみ発生していることに注意してください。
jQuery Mobile アプリケーションがあります。そのアプリケーションにはリストがあり、それらのリスト項目の 1 つでタップホールドが呼び出されると、モーダル ポップアップが開きます。ウィンドウの中央にポップアップが開きます。ユーザーが画面から指を離すと、指の下の要素で mouseup および mousedown (クリック) イベントがトリガーされます。ポップアップが指の下にある場合、問題はありません。「モーダル」グレー領域が指の下にある場合、ポップアップはすぐに閉じます。この動作は正常です。通常ではないのは、これらのイベントが呼び出されるという事実です。簡単にハッキングできますが、それを行うのは私の性質ではありません。原因が知りたいです。
私の問題を説明するために小さなフィドルを作成しましたが、これをテストするには iPad が必要です。iPad エミュレーターで問題を再現できませんでした。
<code>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0-alpha.1/jquery.mobile-1.2.0-alpha.1.min.css" />
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0-alpha.1/jquery.mobile-1.2.0-alpha.1.min.js"></script>
</head>
<body>
<div data-role="page" id="one">
<div data-role="header">
<h1>Taphold dialog test</h1>
</div>
<div data-role="content">
<ul data-role="listview">
<li>
<a href="#">Dummy</a>
</li>
<li>
<a id="taphold-popup-btn" href="#">Taphold me to open popup</a>
</li>
<li>
<a href="#">Dummy</a>
</li>
</ul>
<div data-role="popup" id="taphold-popup" data-overlay-theme="a">
<p>This is a completely basic popup, no options set.<p>
</div>
</div>
</div>
</body>
</html>
</code>
<code>
$(document).ready(function() {
$('#taphold-popup-btn').bind('taphold', function(e) {
e.stopImmediatePropagation();
e.preventDefault();
var $popup = $('#taphold-popup');
$popup.popup();
$popup.popup('open');
});
});
</code>