【问题标题】:jQuery 'this' Looping through a tablejQuery 'this' 循环遍历表
【发布时间】:2012-07-12 06:33:40
【问题描述】:

我正在尝试获取当前行 ID 的值和选定单选按钮的值,该单选按钮是其中一个单元格中的一个组,但具有唯一的名称,并且该行中没有其他单选按钮。

它在行中循环正常,但我无法获得正确的语法来获取我感兴趣的值。

有一次,它会遍历每个“TD”来寻找 ID。另一方面,它说 .attr 不适用于“this”对象。

    function getWMarkImgs() {
       $('#wmkTable tr').each(function() {
       var v1 = $(this).tr.attr('id');
       var v2 = $(this input[name=group1]:checked).val();
       $('#dbgDIV').append('V1=' + v1 +' V2=' v2 + '<hr>');
    });

我似乎总是对“this”对象感到困难。

感谢您的任何帮助。

【问题讨论】:

    标签: jquery html-table this each


    【解决方案1】:
    function getWMarkImgs() {
           $('#wmkTable tr').each(function() {
           var v1 = $(this).attr('id');
           var v2 = $(this).find("input[name=group1]:checked").val();
           $('#dbgDIV').append('V1=' + v1 +' V2=' v2 + '<hr>');
        });
    

    function getWMarkImgs() {
               $('#wmkTable tr').each(function() {
               var v1 = $(this).attr('id');
               var v2 = $(this).children().children("input[name=group1]:checked").val();
               $('#dbgDIV').append('V1=' + v1 +' V2=' v2 + '<hr>');
            });
    

    OR(最好的)

    function getWMarkImgs() {
               $('#wmkTable tr').each(function() {
               var v1 = this.id;
               var v2 = $(this).find("input[name=group1]:checked").val();
               $('#dbgDIV').append('V1=' + v1 +' V2=' v2 + '<hr>');
            });
    

    【讨论】:

    • +1 仅使用this.id。尽管缓存$(this) 然后使用.attr('id') 的任何样本都将非常接近。
    • 第三个选项this.id 循环大约是表格行中 td 元素数量 + tr 本身的 5 倍。
    • 第二个选项也循环,V2 不工作。输出 V1=undefined V2=undefined V1=P1040001 V2=undefined V1=undefined V2=undefined V1=undefined V2=undefined V1=undefined V2=undefined 但第三个选项中的 V2 确实有效。在每一行上,我只有一个 ID,即 TR 元素。
    • 废话循环是什么意思。为你的问题创建一个 jsfiddle
    • 它正在循环播放。问题是由于我在该行的一个单元格中有一个单独的 TABLE 引起的。因此,我需要以某种方式确定每个循环的主行,并决定我更喜欢上述哪一个。有关如何隔离主行的任何指示。无论如何,谢谢 - 我学到了一些东西。
    【解决方案2】:

    试试find()方法:

    获取当前匹配元素集中每个元素的后代,由选择器、jQuery 对象或元素过滤。

    function getWMarkImgs() {
       $('#wmkTable tr').each(function() {
          var v1 = $(this).attr('id');
          var v2 = $(this).find("input[name=group1]:checked").val();
          $('#dbgDIV').append('V1=' + v1 +' V2=' v2 + '<hr>');
       });
    }
    

    【讨论】:

      【解决方案3】:

      试试这个

      function getWMarkImgs() {
          var div = $('#dbgDIV');
          $('#wmkTable tr:has(input[name=group1]:checked)').each(function() {
              var me = $(this);
              var v2 = me.find('input[name=group1]').val();
              div.append('V1=' + me.attr('id') +' V2=' v2 + '<hr>');
      });
      

      【讨论】:

        猜你喜欢
        • 2014-10-29
        • 2012-02-23
        • 2011-03-09
        • 2011-01-05
        • 2014-11-30
        • 2012-07-22
        • 1970-01-01
        • 2014-02-16
        • 2016-06-20
        相关资源
        最近更新 更多