ボタンをクリックすると、jQuery を使用して一部のマップ コントロールを表示/非表示にするマップ アプリケーションがあります。これで、1 つ (pan_zoom コントロール) を除いて、すべてのコントロールが正常に機能しています。マップ コントロールの html 要素は、いくつかのインライン スタイルと共に動的に追加されます。
<div class="pan_zoom" style="display: block; top: 4px">pan zoom button</div>
pan_zoom コントロールは、次のようにマップをロードすると非表示になります。
$('.pan_zoom').hide();
ボタンをクリックすると、次の行を含む関数が呼び出されます。
$('.pan_zoom').toggle();
この関数は、最初のクリックで pan_zoom コントロールを非表示にします。ただし、次のクリックではコントロールが表示されませんでした。
初期化時に pan_zoom コントロールを非表示にせずに、上記を再度テストしました。今回は、切り替えによる要素への影響はありません。
トグル機能が正常に動作しない原因として、何が考えられますか?
この要素に CSS 表示プロパティを設定していないことに注意してください。トグル関数を次のように置き換えることで、この問題を解決できます。
if($('.pan_zoom').css('display') == 'block')
{
$('.pan_zoom').hide();
}
else
{
$('.pan_zoom').show();
}
私がより興味を持っているのは、なぜtoggle()
が正しく機能しないのかを調べることです。
クリック ハンドラーは次のとおりです。
$('button[name="expand_map"]').click(toggleMap);
function toggleMap() {
....
$('.pan_zoom, .and_other_controls').toggle();
}