1

それぞれが何かをする複数のボタンを作成しようとしています。ループの外ではうまく機能していますが、関数を関数eachに挿入した瞬間、機能しません。clickeach

$.each(data.arr, function(i, s){
    html += '<div id="mybtn'+s.id+'"><button class="first">Btn1</button><button class="second">Btn2</button></div>';

    var btnclass="#mybtn"+s.id+" .first";

    $(btnclass).click(function(){
      //do something 
    });
});

何が悪いのか教えてください...

どうもありがとうございます!!!

エラン。

4

3 に答える 3

2

IDセレクターとクラスの間にスペースがありません

var btnclass="#mybtn"+s.id " +  .first";
                          ^ 
                        Space here .. And the 
     + sign should come after the string

また、クリックイベントをforループの外に移動して、委任してみてください...

$.each(data.arr, function(i, s){
    html += '<div id="mybtn'+s.id+'"><button class="first">Btn1</button><button class="second">Btn2</button></div>';

});

 $('body').on('click', '.first' , function(){
      //do something 
    });
于 2012-10-17T16:58:00.227 に答える
1
$.each(data.arr, function(i, s){
  html += '<div id="mybtn'+s.id+'"><button class="first">Btn1</button><button   class="second">Btn2</button></div>';
  var btnclass="#mybtn"+Id+" .first";
  $(btnclass).click(function(){
    //do something });
  });
});
  1. <div>ボタンではなく、にイベントを割り当てます

  2. 「Id」がないため、これも失敗します

  3. HTMLを何にも追加しない=どちらの方法でもイベントはありません

「正しい」方法(意図を推測する):

$.each(data.arr, function(i, s){
  var html = '<div id="mydiv'+s.id+'">';
  html += '<button id="mybtn1'+s.id+'" class="first clickbtn">Btn1</button>';
  html += '<button id="mybtn2'+s.id+'" class="second clickbtn">Btn2</button>';
  html += '</div>';

  $(someElement).append(html);

  $(".clickbtn").on('click', function(){
     //do something });
  });
});
于 2012-10-17T17:08:44.977 に答える
0

しません

var btnclass = "#mybtn" + Id + ".first";

する必要があります

var btnclass = "#mybtn" + s.id + ".first";

また、クリックイベントで見つけられるように、html変数の内容をDOMに添付する必要があります。

于 2012-10-17T16:58:58.100 に答える