2016-09-22 116 views
0

我正在動態地創建幾個按鈕。我試圖分配每個不同的類或ID,所以當它被點擊時會有不同的輸出。我如何在每個類或id名稱的末尾添加一個值,以便爲每個按鈕指定一個唯一的類或id名稱? 這裏是我的代碼分配類或ID給使用jquery動態創建的按鈕

socket.on('usernames', function(data){ 
    var $contentWrap = $("#contentWrap").empty(); 
    for(i=0; i <data.length; i++){ 
     $input = $('<input type="button" style="width:200px" class= "button"/></br>'); 
     $input.val(data[i]); 
     $input.appendTo($("#contentWrap")); 
    } 
}); 

我可以創造一個上,我創建的所有按鈕的單擊事件。到目前爲止,我甚至創建了一個點擊,但它只適用於第一個按鈕。 這裏是我的代碼

$(document.body).on('click','.button', function(e) { 
    console.log($('.button').val()); 
}); 
+0

是否控制檯登錄相同值的所有按鈕點擊事件,或者你說的控制檯日誌只發生在第一個按鈕點擊 –

回答

1

使用$(this).val()而不是$('.button').val()this將參考點擊按鈕。

$(document.body).on('click','.button', function(e) { 
    console.log($(this).val()); 
}); 
0

socket.on('usernames', function(data){ 
 
    var $contentWrap = $("#contentWrap").empty(); 
 
    for(i=0; i <data.length; i++){ 
 
     $input = $('<input type="button" id="btn"'+i+' style="width:200px" class= "button"/></br>'); 
 
     $input.val(data[i]); 
 
     $input.appendTo($("#contentWrap")); 
 
    } 
 
});

+0

和使用電子。 target.id用於檢查是否調用 – jsquerylover

0

問題:是用代碼console.log($('.button').val());的部分$('.button')選擇所有按鈕的一部分,但是當你說.val()則默認爲第一個從集合中。因此,您可以在所有按鈕點擊上看到相同的輸出。

解決方案:更改使用$(this).val()登錄當前點擊按鈕值的代碼。 this將引用觸發事件的元素。

所以最後的代碼行應該是

console.log($(this).val());