2016-05-28 3 views
1

OpenLayers 3を使用してマップインターフェイスを作成しています。ベクトルフィーチャーを選択すると、小さなコントロールパネル(ol.control.Controlを拡張)が表示されます。 Twitter Bootstrapを使用してこのコントロールパネルに複数のタブを追加しようとしていますが、タブスイッチを起動するために必要なイベントがBootstrapになっていないことがわかりました。私は、制御がCSSクラスol-overlaycontainer-stopevent<div>に配置されているため、これが原因でBootstrapのリスナーがイベントを聞こえなくなっていることがわかりました。ol-overlaycontainer-stopeventでブートストラップタブにイベントが渡されない

ここには私がしようとしているもののstripped down JSFiddle exampleがあります。タブをクリックしても何も起こらないことがわかります。このイベントがブートストラップのタブリスナーに確実に届くようにするにはどうすればよいですか?

P.S.ブートストラップのソースコードから、それはリスナーがあなたがそうあなたのページにclickイベントを追加しませんでした

$(document) 
    .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) 
    .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) 
+0

この思える関連します。http:/ /stackoverflow.com/questions/35043780/event-propagation-bootstrap-popover-openlayers-3 – kc9jud

+0

あなたのフィドルでクリックリスナーを定義する瞬間はどれですか? –

+0

@ jonatas-walker https://github.com/twbs/bootstrap/blob/master/dist/js/bootstrap.js#L2196 – kc9jud

答えて

0

で定義されているように見える、それを追加します。

$('#prop-box-content li > a').click(function (e) { 
    e.preventDefault(); 
    console.log(e.target); 
    $(this).tab('show'); 
}); 
+0

を参照してください。私は昨日これを理解しましたが、この質問に戻って忘れました。 Bootstrap.jsによって登録されたリスナーがOpenLayersによって中和されるのはまだ残念です。 – kc9jud

+0

私は実際にBootstrap.jsで使用されているようなフォームを使用することにしました: '$( '[data-toggle =" tab "]、[data-toggle =" pill "]'、ボックス).click(関数(e){ e.preventDefault() $(this).tab( 'show') }); ' – kc9jud

関連する問題