2012-10-17 86 views
1

我想創建多個按鈕,他們每個人都在做一些事情。它在each循環之外運行良好,但是當我在each函數中插入click函數時,它不起作用。這是不可能循環.click功能(創建多個按鈕)

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

請讓我知道什麼是錯的...

非常感謝您!

伊蘭。

回答

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. 這也失敗了,因爲你沒有一個 「身份證」

  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 }); 
    }); 
}); 
+0

謝謝!這是問題!我只是沒有完成HTML代碼,並且我在之前調用了點擊函數... – EranLevi

+0

解決方法:稍後簡單地調用Click函數(或者在完成HTML代碼後使用.click函數運行另一個.each函數).. 謝謝!! – EranLevi

2

缺少的ID選擇器和類

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

也可以嘗試外的移動點擊事件循環並委託其之間的空間......

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

var btnclass =「#mybtn」+ Id +「.first」;

應該是

VAR btnclass = 「#mybtn」 + s.id + 「首先」;

另外,您需要將html變量的內容附加到DOM,因此click事件可以找到它。