0

非同期に追加された私のDOM内の要素でイベントを使用するために長期的に試みています。バインドについて何か読んだことがありますが、このようなものを確立する別の方法はありますか?

たとえば、私はこのような状況にあります。

$.getJQUERY(myUrl, {var:value}, function(i, data){
  $.each(data.values, function(value){
      $("body").append('<div id="div_no_'+i+'">'+value+'</div>);
     // Here i dont want to place the EventListeners
  })
});
$("div_no_1").click(function(){
    // do something
});

誰かがこのようなものを確立する方法を見つけるのを手伝ってくれませんか??

前もって感謝します

偉大な

ベルンハルト

4

2 に答える 2

1

.live()次のようなクリック ハンドラを使用できます。

$("div[id^=div_no_]").live('click', function(){
  // do something
});

これは、で始まる ID を持つ既存または新しい要素からのクリックをリッスンします。div_no_

これは 1 回だけ必要です。作成するすべての div で機能します。

ジェイソンのコメントは、次のような状況でも非常に理にかなっています。

$.getJQUERY(myUrl, {var:value}, function(i, data){
  $.each(data.values, function(value){
      $("body").append('<div id="div_no_'+i+'" class="clickme">'+value+'</div>');
  })
});

$(".clickme").live('click', function(){
  // do something
});
于 2010-03-19T22:30:22.967 に答える
0

これは、jQuery と Javascript をもう少し理解するのに役立つ可能性がある Nick の回答に便乗したものです。

$.getJQUERY(myUrl, {var:value}, function(i, data){
  $.each(data.values, function(value){
      var myDiv = document.createElement('div');
      $(myDiv).id('div_no_' + i).addClass('clickme').text(value);
      $('body').append(myDiv);
  })
});

$(".clickme").live('click', function(){
  // do something
});

このようにすることの利点は、将来変更/更新を行うことにした場合に備えて、よりモジュール化できることです。たとえば、これ以上 a にしたくないと判断した場合は、div作成する要素の型を aspanなどに変更するだけで済みます。必要な変更はこれだけです (この例では、変数がmyDivしかし、うまくいけば、変数にそれよりも良い名前を付けてください:)。基本的に、HTML を直接レンダリングするのではなく、jQuery/JS が面倒な作業を行えるように抽象化します。

ニックの雷鳴を盗もうとしているのではなく、代替の教育的な例を提供しているだけです。

于 2010-03-20T19:15:41.757 に答える