在Button Click上获取该特定行的值

时间:2014-02-18 08:06:03

标签: javascript jquery

现在已经好几个小时了,我仍然没有找到解决方案,但逻辑就在那里,grrr,它只是因为我被困在点击按钮的id,我知道这个已经提出问题,因为我已使用event.target.id$('input[type="button"]').attr('id')实施,但这对我的代码无效,

我有一个3 rows and 12 td's的表格,每行的最后一个td都被隐藏,我检查隐藏的td的值,如果它是0或1,然后是{{1}一个新的appendingtdpending 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

3 个答案:

答案 0 :(得分:2)

您需要委派活动并将选择器更改为当前向HTML DOM添加button而不是input

https://api.jquery.com/on/

http://jsfiddle.net/2K6TQ/7/

使用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() { /*...*/ });

请记住,当您动态创建元素时,您在绑定事件方面有两个选择:

  1. 记住每次创建元素时绑定事件
  2. 使用事件委托,例如在正文上。
  3. 后者很简单,你只需将你的选择器移动到on()方法调用的第二个参数:

    $('body').on('click', 'button', function() { /*...*/ });
    

    我不确定这是否能为您解决所有问题,但这应该是一个开始:)