ページのヘッダー部分で 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 -->