2012-02-23 7 views
1

た後、私は、単純な機能を持っています。jQueryの()メソッド

私は生きていて、他の方法で試してみましたが、役に立たなかった。

私は間違っていますか?

+0

*あなたはどのように 'live()'、 'on()'などいくつかの方法を試しましたか?あなたが何をしたのかわからない場合は、あなたが間違っていたことはわかりません。 –

答えて

4

使用.live().delegate()又は.on()(jQueryの1.7)イベントを結合する:

$(document).on("click", ".slider", function() { 
    ... 

.click(...)のみ、その時点で存在する構成要素にイベントを結合する、.bind('click', ...)の略です。後で追加される要素は、このイベントリスナーを受け取りません。ライブ()メソッドは、実際に、正常に動作します使用

0

$(".slider").live('click',function() { 
    $(this).after('<span class="slider">click me again</span>'); 
}); 

ことを確認してくださいあなたの$(ドキュメント).ready()ハンドラ内でこのコードを埋め込む行います。

0

あなたはon()を使用したと言われていますので、間違って使用していると思われます。

動的な要素上で動作するようにon()ために必要な構文は、このようなのようなものです:私たちは、ドキュメントをターゲットにし、クラスsliderで、すべての子どもたちへのクリックイベントを委任している

$(document).on("click", ".slider", function(){ 
    // click event fired 
}); 

注意してください。 を使用すると、イベントがドキュメントレベルまでバブルアップするため、パフォーマンスが低下し、処理が遅くなる可能性があるため、できるだけ親の親としてon()を使用することをお勧めします。したがって、ページが読み込まれたときに存在するスパンの最も近い親をターゲットにする方がよいでしょう。

live()も推奨されていません。したがって、1.7より下のバージョンのjQueryの場合は、より好ましく、実際にはdelegate()を使用することをお勧めします。

詳細はon()here以上delegate()hereです。