0

LeafletJSを使用してマップを作成し、jQueryを介して起動するトリガーとして機能するボタンを追加しました。ただし、.click()イベントリスナーの使用は機能しませんでした。それで、私はページのソースを見て、いくつかの実験をしました。

JavaScriptを介して生成されたコードのほとんどすべてがjQueryに表示されないことを発見しました。マップの要素のほとんどをトリガーとして使用したり、何らかの方法でそれらに影響を与えたりすることはできませんでした(たとえば、を使用.css())。

私は2つのことを知りたいです:

  • JavaScriptを介して生成されたHTMLがjQueryに表示されないのはなぜですか?そしてそれはライブラリ(LeafletJS)固有ですか
  • ライブラリ自体を変更せずに、jQueryを使用してJavaScriptライブラリを介して生成されたHTMLに到達する方法はありますか?
4

3 に答える 3

2

jQueryでそこに何も触れられない理由は、LeafletJSのコードが非同期で実行されるためです。jQueryコードを実行するとき、問題の要素はまだ作成されていません。

コールバックでjQueryコードを実行する必要がありwhenReadyます。


クリックイベントをリッスンしようとしているだけの場合は、イベント委任を使用できます。

$(document).on('click', 'The CSS selector', function () {
    // Your code here...
});

これは機能しますが、パフォーマンス上の理由から、LeafletJSを呼び出している要素にイベントリスナーをバインドする必要があります。

于 2013-01-27T17:48:20.157 に答える
0

JSで生成されたhtmlでclick()関数を正しく使用するには、live()関数を使用する必要がありますhttp://api.jquery.com/live/

$('.element').live('click', function(){
  // your code here
});
于 2013-01-27T17:52:45.700 に答える
0

.live(events、handler(eventObject))

非推奨のバージョン:1.7、削除:1.9

「.on()」を使用する方が正しいです。

于 2013-01-27T18:05:53.207 に答える