【问题标题】:Getting the table row values with jQuery使用 jQuery 获取表格行值
【发布时间】:2012-06-26 18:05:33
【问题描述】:

我正在尝试从 HTML 表格行中获取值。当我单击表格行删除按钮时,我想将这些值放在变量上以发送到服务器。我从 here 中找到了一些看起来像我需要的东西,但是当我为我的场景将它们放在一起时,它不起作用。

这是表格 HTML:

  <table id='thisTable' class='disptable' style='margin-left:auto;margin-right:auto;'  >
    <tr>

   <th>Fund</th>
   <th>Organization</th>
   <th>Access</th>
   <th>Delete</th>
   </tr>
    <tr>
   <td class='fund'>100000</td><td class='org'>10110</td><td>OWNED</td><td><a  class='delbtn'ref='#'>X</a></td></tr>
   <tr><td class='fund'>100000</td><td class='org'>67130</td><td>OWNED</td><td><a class='delbtn' href='#'>X</a></td></tr>
   <tr><td class='fund'>170252</td><td class='org'>67130</td><td>OWNED</td><td><a class='delbtn' href='#'>X</a></td></tr>
   <tr><td class='fund'>100000</td><td class='org'>67150</td><td>PENDING ACCESS</td><td><a  class='delbtn' href='#'>X</a></td></tr>
   <tr><td class='fund'>100000</td><td class='org'>67120</td><td>PENDING ACCESS</td><td><a class='delbtn' href='#'>X</a>
   </td>
  </tr>

这里是 jQuery:

  var tr = $('#thisTable').find('tr');
        tr.bind('click', function(event) {
            //var values = '';
           // tr.removeClass('row-highlight');
            var tds = $(this).addClass('row-highlight').find('td');
            
            $.each(tds, function(index, item) {
                values = values + 'td' + (index + 1) + ':' + item.innerHTML + '<br/>';
                alert(values);
            });
            alert(values);

        });

我做错了什么?我一直在看例子,但我似乎无法完成这项工作。

【问题讨论】:

  • 您希望该 HTML 示例的输出是什么?
  • 我希望点击的行中的值会被警告连接。至少开始。

标签: javascript jquery html


【解决方案1】:

试试这个:

jQuery('.delbtn').on('click', function() {
    var $row = jQuery(this).closest('tr');
    var $columns = $row.find('td');

    $columns.addClass('row-highlight');
    var values = "";
    
    jQuery.each($columns, function(i, item) {
        values = values + 'td' + (i + 1) + ':' + item.innerHTML + '<br/>';
        alert(values);
    });
    console.log(values);
});

DEMO

【讨论】:

  • 谢谢里卡多。我必须感谢这个答案。我绞尽脑汁好几个小时。
  • 人们必须使用$而不是jQuery
【解决方案2】:

试试这样的:

$(document).ready(function(){
    $("#thisTable tr").click(function(){
        $(this).find("td").each(function(){
            alert($(this).html());
        });
    });
});​

这里是一个正在运行的代码:https://jsfiddle.net/YhZsW/

【讨论】:

  • 我只希望函数给我点击行的值而不是整个表。这就是我卡住的地方。
  • 嗨,小提琴和代码已经更新 :) 我只是将“每个”更改为“点击”
【解决方案3】:

所有元素

$('#tabla > tbody  > tr').each(function() {
    $(this).find("td:gt(0)").each(function(){
       alert($(this).html());
       });
});

【讨论】:

    【解决方案4】:

    Here is a working example。我将代码更改为输出到 div 而不是警报框。我相信你的问题是item.innerHTML。我改用 jQuery html 函数,这似乎解决了这个问题。

    <table id='thisTable' class='disptable' style='margin-left:auto;margin-right:auto;'  >
        <tr>
    
       <th>Fund</th>
       <th>Organization</th>
       <th>Access</th>
       <th>Delete</th>
       </tr>
        <tr>
       <td class='fund'>100000</td><td class='org'>10110</td><td>OWNED</td><td><a  class='delbtn'ref='#'>X</a></td></tr>
       <tr><td class='fund'>100000</td><td class='org'>67130</td><td>OWNED</td><td><a class='delbtn' href='#'>X</a></td></tr>
       <tr><td class='fund'>170252</td><td class='org'>67130</td><td>OWNED</td><td><a class='delbtn' href='#'>X</a></td></tr>
       <tr><td class='fund'>100000</td><td class='org'>67150</td><td>PENDING ACCESS</td><td><a  class='delbtn' href='#'>X</a></td></tr>
       <tr><td class='fund'>100000</td><td class='org'>67120</td><td>PENDING ACCESS</td><td><a class='delbtn' href='#'>X</a>
       </td>
      </tr>
    </table>
    <div id="output"></div>​
    

    javascript:

    $('#thisTable tr').on('click', function(event) {    
        var tds = $(this).addClass('row-highlight').find('td');
        var values = '';
        tds.each(function(index, item) {           
            values = values + 'td' + (index + 1) + ':' + $(item).html() + '<br/>';
        });
        $("#output").html(values);
    });
    

    【讨论】:

    • 抱歉 Jhon,您的解决方案对我不起作用?我不知道为什么。我改变了 $("#output").html(values);到 alert(values) 并且它不做任何事情。里卡多解决方案似乎做到了。
    【解决方案5】:
    $(document).ready(function () {
            $("#tbl_Customer tbody tr .companyname").click(function () {
    
                var comapnyname = $(this).closest(".trclass").find(".companyname").text();
                var CompanyAddress = $(this).closest(".trclass").find(".CompanyAddress").text();
                var CompanyEmail = $(this).closest(".trclass").find(".CompanyEmail").text();
                var CompanyContactNumber = $(this).closest(".trclass").find(".CompanyContactNumber").text();
                var CompanyContactPerson = $(this).closest(".trclass").find(".CompanyContactPerson").text();
               // var clickedCell = $(this);
                alert(comapnyname);
                alert(CompanyAddress);
                alert(CompanyEmail);
                alert(CompanyContactNumber);
                alert(CompanyContactPerson);
    
                //alert(clickedCell.text());
            });
        });
    

    【讨论】:

    • .companyname 单元格点击部分。 .trclass 表示 tr 类名。在查找双引号中是每个 td 类名 ...它工作正常
    猜你喜欢
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 2012-05-13
    • 2012-05-30
    • 2013-05-16
    • 1970-01-01
    相关资源
    最近更新 更多