1

ページのヘッダー部分で 2 つのアンカー タグを使用しています。それらのクリック イベントをキャッチして、パネルを開くことができるようにしたいと考えています。アンカー タグの代わりにボタンを使用すると、次のような ID で簡単にキャッチできます。

 $(document).on('click', function(evt){
        var target = evt.target;
        var targetId = target.getAttribute('id');

        if(targetId === 'openRightPanel'){
            $('.right-panel').panel('open');
            evt.stopImmediatePropagation();
            evt.preventDefault();
        }
}

しかし、アンカー タグを使用すると、このようなクリック イベントを取得できません。

if(targetId === 'openRightPanel'){
            $('.right-panel').panel('open');
            evt.stopImmediatePropagation();
            evt.preventDefault();
}

私のアンカータグにはopenRightPanelのIDがありますが。

jQuery モバイルが HTML に新しい div を作成していることに気付いたので、このコードを使用してそのクリック イベントをキャッチし始めました。

    while (target !== null) {
                if(target['id'] === 'openLeftPanel'){
                    $('.left-panel').panel('open');
                    isPreventOn = true;
                }
                else if(target['id'] === 'openRightPanel'){
                    $('.right-panel').panel('open');
                    isPreventOn = true;
                }
                target = target.parentNode;
            }

これは正常に動作していますが、Android 4.1 でいくつかの問題が発生し、クリック イベントをキャッチするための while ループが適切ではないように思えました。

だから私の質問は、 jQueryモバイルでこれらのアンカータグに対して行われたクリックイベントをループせずにキャッチするにはどうすればよいですか、それともそのイベントを取得する別の方法がありますか? これらは取得したいアンカー タグです。

<div data-role="header">
    <h1>title</h1>
    <a id="openLeftPanel">open</a>
    <a id="openRightPanel">open</a>
</div><!-- /header -->
4

2 に答える 2

0

セレクターでクリックイベントを直接持つことができます

$("#openLeftPanel").off('click').on('click', function(evt){

});

$("#openRightPanel").off('click').on('click', function(evt){

});
于 2013-07-23T04:07:57.563 に答える
0

クリック イベントをドキュメントに添付するのではなく、アンカー要素に添付します。

あなたが持っている:

$(document).on('click', function(evt){...});

あなたが持っている必要があります:

$('[data-role="header"] a').on('click',function(evt){...});

または、両方の関数を分離するだけです。

$('#openLeftPanel').on('click',function(evt){...});
$('#openRightPanel').on('click',function(evt){...});
于 2013-07-23T04:09:27.320 に答える