繁体   English   中英

使用AJAX返回数据填充的HTML表的突出显示行

[英]Highlighting row of a HTML table which is populated using AJAX return data

如何在单击鼠标时获取表的行值? 该表中的数据是使用AJAX返回的数据填充的。

以下是无效的代码:

$('table#tblBdy tbody tr').click(function() {
   $('tr').click(function () {
     var tableData = $(this).closest("tr").children("td").map(function() {  
    return $(this).text();
   }).get();
   $('#bx1txt').val($.trim(tableData[0]));
   $('#bx2txt').val($.trim(tableData[1]));
   $('#oldqty').val($.trim(tableData[1]));
});

我不确定我是否完全遵循您的问题,您的标题和说明似乎冲突。 您是否希望在点击时获得特定单元格的价值? 您的问题说您想要连续的价值...

如果我对它的理解正确,则您可能需要单击某个特定单元格的值,或者要突出显示正在单击的该单元格的行。

我已经使用简单的解决方案设置了Codepen http://codepen.io/anon/pen/oXNeMx

根据表的生成方式,您可以将该javascript代码放入其自己的函数中,并在每当有新的AJAX数据时调用该函数,以使点击处理程序绑定到表和元素。

//handles table cell click events
$('td').click(function(){

  //updates the value
  var cellValue = $(this).html();

  //find the row of table where cell was clicked
  var tr = $(this).closest('tr');

  //removes select class from all rows
  $(tr).siblings().removeClass('highlight');

  //adds class to highlight selected row
  tr.addClass('highlight');

});

您的代码无法正常运行的原因是,您将事件处理程序附加到了某些元素,但是随后用AJAX调用中的新元素替换了这些元素。

您需要在一个不会改变的元素上设置一个事件处理程序,例如,表格(如果表格被完全替换,则需要找到一个永远不变的高级祖先)。

// ancestor      event    real selector
$('#tblBdy').on('click', 'tbody td', function() {
    // Same code as yours in the handlers
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM