0

Ajax リクエストを使用して要素を作成しています。関数を各要素にバインドして、クリック イベントで実行したいと考えています。これどうやってするの?要素を生成するコードは次のとおりです。

ajaxCall("/getItems","POST",data,function(result){
  var element = $('.item').first();
  $('#item-list-section').empty();
  for(var i = 0; i < result.items.length; i++){
    var clone = element.clone();
    clone.attr("id", result.items[i].itemId);
    clone.find('.item-price').html("<h4>25</h4>");
    if(result.items[i].itemName.length > 20){
      clone.find('.item-name').css('overflow','hidden');
      clone.attr('title', result.items[i].itemName )
    }
    clone.find('.item-name').html("<h4>"+ result.items[i].itemName + "</h4>");
    //clone.mousedown(onItemClick(clone));
    clone.draggable({
      revert : false,
      zIndex: 1,
      containment: "window",
      opacity: 0.5,
      cursor: "move",
      helper: function() { return $(this).clone().appendTo('body').show(); }
    });
    $('#item-list-section').append(clone);
  }
});
4

6 に答える 6

2

イベントバブリングの概念を使用してイベントを要素にアタッチするイベントデリゲーションを使用する必要があります...

$(staticContainer).on("click", element , function(event){
  // Code here
});

staticContainer -- DOM に常に存在する要素。動的に作成された要素に近いほど良いです。

element- イベントを添付する動的に作成されたエンティティ

于 2013-06-03T06:40:15.940 に答える
0

One solution is using event delegation with .on() method:

$('#item-list-section').on('click', '.item', function () {
    // do something
});

Another solution is clone your element with events, just pass true to your .clone() method:

var clone = element.clone(true);
  • Note that this will work if your var element = $('.item').first(); is static on the page.

References:

  • .clone() - jQuery API Documentation
  • .on() - jQuery API Documentation
于 2013-06-03T06:46:39.510 に答える
0
$(clone).on("click", function(event){
  alert($(this).attr('id'));
});

これをチェックして、ID を警告するかどうかを調べます。

于 2013-06-03T06:34:46.840 に答える
0

要素のループごとに

$(clone).each(function(index, value) { 
$(value).on("click", function(event){
  alert($(this).text());
});
}
于 2013-06-03T06:35:17.920 に答える
0
$(clone).bind("click",function(event){
// your code
});

これを試してください。

于 2013-06-03T06:35:45.750 に答える
0
$(document).on("click",value, function(event){
  alert($(this).text());
});
于 2013-06-03T06:35:52.260 に答える