3

プロジェクトにLeaflet.jsを使用していて、マーカーのイベントをjQuery on()でバインドしたいと思います。

私は次のようなものをテストしました:

$('body').on("hover",".leaflet-marker-icon",function(){console.log("foo")}) //doesn't work

しかし、何も起こりません。

一方、イベントを直接バインドすると機能します。

$(".leaflet-marker-icon").hover(function(){console.log("bar")}) //works

私は自分のページの別のdivでjQuery.on()をテストしました:

$('body').on("hover",".navbar",function(){console.log("g")}) //no problem

これは問題なく動作します。

どんな手掛かり?

4

4 に答える 4

2

伝播は起こらないようです。より正確な答えを得るには、より多くのコードを提供する必要があります。今のところ、それ.stopPropagation()はどこかで呼ばれていると思います

于 2012-08-18T13:33:47.587 に答える
2

これを試して:

$(document).ready(function(){
     $(document).on({
        mouseenter: function(){
           console.log("bar")
        },
        mouseleave: function(){
           console.log("foo")
        }
     }, ".leaflet-marker-icon")
})

jQuery 1.8 の時点で、「hover」という名前は文字列の省略形として使用されており、mouseentermouseleave推奨になっていることに注意してください。

于 2012-08-18T13:39:31.123 に答える
1

試す

$(document).on("hover",".leaflet-marker-icon",function(){console.log("foo")});

body の代わりに document - 最初の body ロードでは存在しなかった dom 要素のイベントをキャッチする正しい方法であるはずです。

于 2012-08-18T13:43:24.970 に答える