2011-11-15 7 views
4

jqueryでappendメソッドを使用して段落を動的にレンダリングしていますが、clickイベントを追加したいのですが、何らかの理由でclickイベントが機能していません。シンプルですが、私はjqueryを初めて使っていて、助けてくれてありがとうと思います...静的なボタンでテストしたので、関数内のコードはうまくいきました。動的なものとはうまく動作しません。ここ jqueryボタンがクリックメソッドに応答しない

は私のコードです

$(this).parent().parent().children("div").append("<p class='tryAgain'>Try Again</p>"); 

クリック機能コード、

$(".tryAgain").click(function() {......} 
+0

jqueryのを歓迎します。クリックに関する詳細については、こちらのリンクをクリックしてください。[http://stackoverflow.com/questions/2954932/difference-between-jquery-click-bind-live-delegate-and-trigger-functions-ウィット)。最新のjqueryバージョン(1.7)では、すべてのイベントバインディングメソッドが1つのメソッドに融合されているため、すべてのルールを継承しています: '.on()' – roselan

答えて

7

document.readyが起動した後にDOMに追加するものは、新しく追加された要素にイベントハンドラを追加するために.liveまたは.delegateを使用する必要があります。例えば

$('.tryAgain').live("click", function() {...}); 

あなたが.onを使用する必要があります1.7以上のjQueryを使用している場合:

$(document).on("click", ".tryAgain", function(){ ... }); 
+0

http://api.jquery.com/live/ – Chris

+0

ありがとう!それはうまくいった! – skevthedev

+1

+1は$ .onを参照してください! – Galled

1

用途:

$('.tryAgain').live('click', function() 
{ 
    .... 
}); 
0

ライブイベントを使用するための代替があります次のように要素を作成するときにハンドラを追加できます。

$("<p>Try Again</p>", { 
    "class": "tryAgain", 
    click: function(){ 
    //YOUR CLICK HANDLER 
    } 
}).appendTo($(this).parent().parent().children("div")); 
0

私はあなたがこのような新しいpタグを作成するときに右がクリックイベントを添付することができると思います。

$(this).parent().parent().children("div").append(
    $('<p>').addClass('tryAgain').click(function(){ 
     alert('test'); 
    })); 
関連する問題