循环.click功能是不可能的(创建多个按钮)

时间:2012-10-17 16:55:07

标签: jquery html ajax each

我正在尝试创建多个按钮,每个按钮都会做一些事情。它在each循环之外工作得很好,但是当我在click函数中插入each函数时,它不起作用。

$.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 
    });
});

请让我知道出了什么问题......

非常感谢!!!

叶兰。

3 个答案:

答案 0 :(得分:2)

缺少id选择器和类

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

还尝试在for循环外移动click事件并委托它...

$.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 
    });

答案 1 :(得分: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添加到任何事件中=无事件

  4. “正确”的方式(猜测意图):

    $.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 });
      });
    });
    

答案 2 :(得分:0)

  

var btnclass =“#mybtn”+ Id +“。first”;

应该是

  

var btnclass =“#mybtn”+ s.id +“。first”;

此外,您需要将html变量的内容附加到DOM,因此click事件可以找到它。