现在已经好几个小时了,我仍然没有找到解决方案,但逻辑就在那里,grrr,它只是因为我被困在点击按钮的id
,我知道这个已经提出问题,因为我已使用event.target.id
和$('input[type="button"]').attr('id')
实施,但这对我的代码无效,
我有一个3 rows
and 12 td's
的表格,每行的最后一个td都被隐藏,我检查隐藏的td的值,如果它是0或1,然后是{{1}一个新的appending
说td
和pending for value 0
,我正在动态分配accepted for value 1
,如下面的脚本所示。
脚本
Id
之后,我想获取已点击的某一行的var lastTr = $('table tbody').find('tr');
$(lastTr).find('td:last').hide();
var a = 0;
$(lastTr).find('td:last').each(function(){
var textVal = $(this).text();
if(textVal == 0){
$(this).after('<td class="center"><button id="'+a+'" type="button" class="btn-danger">Pending</button></td>');
}else if(textVal == 1){
$(this).after('<td class="center"><button id="'+a+'" type="button" class="btn-success" disabled="disabled">Accepted</button></td>');
}
});
文本值,这是我的代码,
脚本
first, second, tenth and eleventh
我的JSFIDDLE
答案 0 :(得分:2)
您需要委派活动并将选择器更改为当前向HTML DOM添加button
而不是input
:
使用Javascript:
$(document).on('click', 'button', function(){
var idButtonClicked = $(this).attr('id');
console.log(idButtonClicked);
$(this).parent().parent().find('td').each(function(){
value1 = $('td:eq(0)').text();
value2 = $('td:eq(1)').text();
value10 = $('td:eq(9)').text();
value11 = $('td:eq(10)').text();
});
console.log('value 1 = '+ value1);
console.log('value 2 = '+ value2);
console.log('value 9 = '+ value10);
console.log('value 10 = '+ value11);
});
答案 1 :(得分:1)
而不是:
$('input[type="button"]').on('click', function(){
试试:
$('body').on('click','input[type="button"]' function(){
因为第一个语句仅适用于javascript函数执行时已经存在的那些输入。后者适用于您动态添加的所有潜在未来输入。
答案 2 :(得分:1)
你的选择器错了,它不是“输入[type = button]”,而是“按钮”。我想你想要这个:
$('button').on('click', function() { /*...*/ });
请记住,当您动态创建元素时,您在绑定事件方面有两个选择:
后者很简单,你只需将你的选择器移动到on()方法调用的第二个参数:
$('body').on('click', 'button', function() { /*...*/ });
我不确定这是否能为您解决所有问题,但这应该是一个开始:)