0

live私は、jquery の機能を使用しないことを示唆する、stackexchange や Web 上の多くのアドバイスを見てきました。そして、現時点では非推奨なので、削除したいと思います。また、JavaScript を 1 か所 (目立たないように) に留めようとしています。そのため、ページの下部には配置していません。liveただし、ページにまだ存在しない要素を回避するためにコードを書き直す方法については不明です。

私のサイトの JavaScript ファイル内には、次のようなものがあります。

 $(function() {
    $('button.test').live('click', function(){
      alert('test');
    });
 });

.on(要素がまだ存在しないため、機能しません。

ボタンは、カラーボックス ポップアップ モーダル ウィンドウにロードしたページにあります。そのカラーボックス ウィンドウが DOM のどこにあるのか正確にはわかりませんが、一番上にあると思います。

liveデリゲートを使用してこれをドキュメントに添付することもできますが、これを回避するために使用しないことの全体的なポイントではありませんか?

この場合、どのように処分するのが一番良いのliveでしょうか?

4

3 に答える 3

3

あなたが使用することができます.on()- http://api.jquery.com/on/

$(document).on("click", "button.test", function() {
    alert('test');
}); 
于 2012-07-24T23:02:12.750 に答える
0

ドキュメントレベルで添付されたliveと の両方を避けることになりました。on方法は次のとおりです。

関数内のカラーボックス ウィンドウに読み込まれるページ内のオブジェクトに固有のすべての jquery コードを次のようにラップします。

function cboxready(){
...
}

この関数にラップされたコードは、(ドキュメント レベルでアタッチする代わりに) オブジェクトに直接アタッチできます。これは、カラーボックス ウィンドウが開いた後にのみ実行されるためです。

次に、カラーボックスをアタッチするときに、カラーボックスのコールバックを使用してこの関数を呼び出すだけです。

$('a.cbox').colorbox({
    onComplete:function(){ cboxready(); }
});
于 2012-07-25T16:25:12.660 に答える
0

live() を使用する場合は、die() を使用できます。

on() と off() も使用できます。

それらはほぼ同じことを行いますが、使用することをお勧めします。

于 2012-07-24T23:03:51.040 に答える