Javascript jQuery获取触发事件的行并更新表中的特定td

Javascript jQuery获取触发事件的行并更新表中的特定td,javascript,jquery,html,onclick,html-table,Javascript,Jquery,Html,Onclick,Html Table,我正在尝试捕获触发表中事件的行的索引,如下所示: <tr> <td class="sorting_1" style="text-align:left;" width="10%"> <a class="btnWatchList" value="1"><i class="fa fa-edit"></i></a> <a class="deleteBulkItem" value="2"><i class="

我正在尝试捕获触发表中事件的行的索引,如下所示:

<tr>
 <td class="sorting_1" style="text-align:left;" width="10%">
 <a  class="btnWatchList" value="1"><i class="fa fa-edit"></i></a>
 <a class="deleteBulkItem" value="2"><i class="fa fa-trash"></i></a>
 </td>
</tr>
因此,这里是棘手的部分,我不希望只在任何TR点击时触发事件,而只是TR中的一个特定按钮,即元素:

 <a  class="btnEdit" value="1"><i class="fa fa-edit"></i></a>

所以现在,一旦我找到了触发事件的列的索引,我想首先将链接的文本设置为“Clicked”或类似的内容,这样我就可以知道它真的起作用了

因此,总结一下我在这里要实现的目标:

  • 获取触发
    onclick
    事件的行索引(仅在
    btnEdit
    单击时,而不只是任何tr单击)

  • 首先将链接文本更新为“已单击”


有人能帮我一下吗?

对准按钮,用鼠标移动到第二行。根据显示的代码,您甚至不需要索引,只需要行对象

$("#datatable-responsive").delegate("tr .btnEdit", "click", function (e) {
     var $row = $(this).closest('tr');       
     $row.find('td:eq(2)').text('ChangedText'); // changing the text    
});

请注意,
delegate()
已被弃用,如果您使用的jQuery版本大于1.7,则应改为使用
on()

以按钮为目标,并使用。根据显示的代码,您甚至不需要索引,只需要行对象

$("#datatable-responsive").delegate("tr .btnEdit", "click", function (e) {
     var $row = $(this).closest('tr');       
     $row.find('td:eq(2)').text('ChangedText'); // changing the text    
});

请注意,
delegate()
已被弃用,如果您使用的jQuery版本大于1.7,则应改为使用
on()

使用类名。deleteBulkItem获取clcik事件。然后我们使用“最近”来查找父tr

$("#datatable-responsive").delegate(".deleteBulkItem", "click", function (e) { 

var tr = $(this).closest('tr').index();
$('#datatable-responsive tr:eq('+tr+') td:eq(2)').find('a.eq(0)').text('ChangedText');  

//or you traverse like this 

 var  $tr = $(this).closest('tr');
    $tr.find('td:eq(2)').find('a.eq(0)').text('ChangedText');

});

使用类名.deleteBulkItem获取clcik事件。然后我们使用“最近”来查找父tr

$("#datatable-responsive").delegate(".deleteBulkItem", "click", function (e) { 

var tr = $(this).closest('tr').index();
$('#datatable-responsive tr:eq('+tr+') td:eq(2)').find('a.eq(0)').text('ChangedText');  

//or you traverse like this 

 var  $tr = $(this).closest('tr');
    $tr.find('td:eq(2)').find('a.eq(0)').text('ChangedText');

});


$(#datatable responsive”).delegate(.deleteBulkItem)”,“click”,函数(e){};像这样改变你的选择器,而只是TR中的一个特定按钮-如果你只想在按钮点击时触发它,为什么不将点击事件绑定到按钮上?@Pete你能给我一个简单的例子说明你的想法吗?@Pete如果你是指像JYoThl发布的东西,我就是这样做的,但我总是得到索引值0@JYoThI如果我这样做,那么对于任何单击的行,我总是得到index=0$(#datatable responsive”).delegate(.deleteBulkItem)”,“click”,函数(e){};像这样改变你的选择器,而只是TR中的一个特定按钮-如果你只想在按钮点击时触发它,为什么不将点击事件绑定到按钮上?@Pete你能给我一个简单的例子说明你的想法吗?@Pete如果你是指像JYoThl发布的东西,我就是这样做的,但我总是得到索引值0@JYoThI如果我这样做,那么对于任何单击的行,我总是得到index=0?还给出了在
tr
遍历中使用全局变量的错误做法。请使用
tr
traverse的全局变量检查我的更新答案@charlietflbad practice。请查看我的最新答案@charlietflCharlie hey,非常感谢您的回复:)。。。这种改变文本的方式并不是我想要实现的,这样我实际上会用文本“ChangedText”来更新整个列,但我不想更新此行中的整个单元格2,而是只更新td中的这一部分:所以在
find()
$row.find('td:eq(2)')。find('a:eq(0)')。text('ChangedText')中添加所需的选择器;有两个锚标签。这不是问题吗@charlietfladdle就是这样。您确实没有指定所需的确切行为。向您想要修改的内容添加一个类将有助于Charlie hey,非常感谢您的回复:)。。。这种改变文本的方式并不是我想要实现的,这样我实际上会用文本“ChangedText”来更新整个列,但我不想更新此行中的整个单元格2,而是只更新td中的这一部分:所以在
find()
$row.find('td:eq(2)')。find('a:eq(0)')。text('ChangedText')中添加所需的选择器;有两个锚标签。这不是问题吗@charlietfladdle就是这样。您确实没有指定所需的确切行为。将类添加到要修改的内容中会有所帮助