2012-03-23 7 views
0

私はサーバーから取得しているJSONPデータからいくつかのdivを作成しています。私はdivをクリックしたときに背景画像を変更する簡単なjquery関数を実行しようとしていますが、何も表示されていないようです。私のコードはそうだ。ajaxで作成したdivで関数を実行できませんJSONP

success: function(data){ 
console.log(data); 
for(aArray in data) { 
var array = data[aArray]; 
$("#first").append('<p>' + array.something + '</p>'); 
$("#second").append('<div class="buttons btn"><p>' + array.something + '</p></div>'); 
$("#third").append('<div class="buttons btn"><p>' + array.something + '</p></div>'); 
$("#fourth").append('<div class="buttons btn"><p>' + array.something + '</p></div>'); 
} 

上記のコードはデータを表示しますが、ボタンクラスに関数をアタッチしようとしても何も起こりません。何か間違っているのですか?もし私がページにdivを入れて、関数を実行すると、背景イメージは必要に応じて変わります。以下は私の変更bg関数です。

$(".buttons").click(function() { 
$(this).removeClass("buttons").addClass("buttonsDown"); 
}); 

ご協力いただきまして誠にありがとうございます。代わりに

$('.buttons').on('click', function(evt) { 

     $(this).removeClass("buttons") 
      .addClass("buttonsDown"); 
    }); 

答えて

1

使用.on()または.delegate()

$(document).on('click', '.buttons', function() { 
    $(this).removeClass("buttons").addClass("buttonsDown"); 
}); 
+0

これは完全に働いて、少し後の研究は私が後になっているようです。情報のための多くのありがとう! – JPK

+0

あなたの答え(編集後)のコードは機能上、質問のコードと同じです。 'on()'を使うつもりならば、動的に生成されない要素に対して呼び出されるイベントデリゲーションスタイルを使う必要があり、コールバック関数をトリガする子要素のセレクタをとります。 –

+0

申し訳ありません.live() 'は' .live() 'が廃止予定で廃止され、' .on() 'が現在私の希望をどのように働かせるか少し忘れているため、'。 – Vytautas

0

あなたはjQueryの.on()を使用してのようなコンテキストを渡す必要があり、動的に要素を追加するためにイベントをバインドするにはイベントを処理するには、onまたはdelegateを使用する必要があります。 - http://api.jquery.com/on/

    • on()on()

      $(document).on('click', '.buttons', function() { 
          $(this).removeClass("buttons").addClass("buttonsDown"); 
      }); 
      

      参照の使用delegate()

      $(document).delegate('.buttons', 'click', function() { 
          $(this).removeClass("buttons").addClass("buttonsDown"); 
      }); 
      

      を使用して

      - http://api.jquery.com/delegate/
  • +0

    あなたは文脈を渡すのを忘れました。 – nnnnnn

    0

    はあなたが動的に要素を追加しているので

    関連する問題