10

目的

クリック時にアンカー タグの親 div を閉じる。以下のコードでは、ユーザーがアンカー タグclose_performance_ttをクリックしたときにdiv performance_ttを非表示にします。

問題

数時間費やした後、iOS デバイスで動作させることができません。BlackBerry 10 デバイスであっても、他のすべてで問題なく動作します。

<div id="performance_tt" style="display: none;width: 300px;height: 200;overflow: auto;padding: 5px;background-color: yellow;">
    <div>Website performance has become an important consideration for most sites.
    The speed of a website affects usage and user satisfaction, as well as search engine rankings, a factor that directly correlates to revenue and retention.
    As a result, creating a system that is optimized for fast responses and low latency is key.</div>
    <a id="close_performance_tt" href="#">Close</a>
    <script>
    var userAgent = navigator.userAgent.toLowerCase();
    var isiOS = (navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ? true : false);
    if (isiOS) {
        $("#close_performance_tt").bind('touchstart', function() {
            alert('Touch-start event triggered');
        });
    } else {
        $("#close_performance_tt").bind('click', function() {
            alert('Click event triggered');
        });
    }
    </script>
</div>
4

3 に答える 3

2

iOSaタグはクリック可能な要素であるため、リンクをタッチするとマウス イベント ( を含むclick) がトリガーされます。

このコード

$("#close_performance_tt").bind('click',function() { 
    alert('Click event triggered');                             
}); 

iOSでは問題なく動作します。

詳細情報: http://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html

于 2013-08-13T05:48:12.127 に答える
2

http://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.htmlを参照してください。

クリックなどの iOS マウス イベントの場合、次の場合を除き、バブしないでください。

  • イベントのターゲット要素は、リンクまたはフォーム フィールドです。
  • ターゲット要素、または までのその先祖のいずれかには、マウス イベントのいずれかに対して設定された明示的なイベント ハンドラがあります。このイベント ハンドラは、空の関数である可能性があります。
  • ターゲット要素、またはドキュメントまでのその先祖のいずれかに、cursor: pointer CSS 宣言があります。

私にとって最も簡単な解決策cursor: pointerは、iOS タッチ デバイスの場合はどこにでも適用することです。カーソルがないため、視覚的な影響はありません

于 2015-07-16T16:01:43.017 に答える