0
function OnIframeContentLoads(){        
  $("#iframe")
    .contents()
    .find(".text")
    .live({ 
      click: OpenSingleImageEditor, 
      mouseover: function () { HighLight(this) }, 
      mouseout: function () { OffLight(this);} 
    });    
}   

.bind() でイベントをバインドしているときは機能しますが、上記のコードのように live() では機能しません。ここで問題は何ですか?

4

3 に答える 3

5

これは の既知の問題です。代わり.liveに使用してください.on

ドキュメントから

メソッドの連鎖はサポートされていません。例: $("a").find(".offsite, .external").live( ... ); は有効ではなく、期待どおりに動作しません。

$("#iframe").on('click', '.text', function(){ ... });    
于 2012-04-23T13:27:11.480 に答える
1

.live には、.bind には当てはまらないかなり特殊な制約があることに気付きました。特に、どの種類のキャッシュされたセレクターでも機能しません。おそらく .find()/.contents() に当てはまると思います。

代わりにこれを試してください:

$("#iframe .text").live({ click: function(){ console.log('clicked') } })
于 2012-04-23T13:27:31.563 に答える
0

jquery on() メソッドを使用する必要があります。

$(element).on( events [, selector] [, data], handler(eventObject) )

http://api.jquery.com/on/

.on() メソッドは、jQuery オブジェクトで現在選択されている要素のセットにイベント ハンドラーをアタッチします。jQuery 1.7 以降、.on() メソッドは、イベント ハンドラーをアタッチするために必要なすべての機能を提供します。古い jQuery イベント メソッドからの変換については、.bind()、.delegate()、および .live() を参照してください。.on() でバインドされたイベントを削除するには、.off() を参照してください。1 回だけ実行されてから削除されるイベントをアタッチするには、.one() を参照してください。

于 2012-04-23T13:29:14.620 に答える