繁体   English   中英

如何在jquery中获取嵌套元素

[英]how to fetch nested elements in jquery

当天早些时候,我遇到了jquery's find方法。 现在我无法从下面的html表中获取嵌套元素:

在此输入图像描述

我想要做的是:在每个复选框选中的列,即select ,我想打印兄弟姐妹的值,即nameaddress但我无法做到这一点。 以下是我的代码:

$("#but").click(function(){
        $(".tabclass tr td input[type='checkbox']:checked").each(function(){
            var sibs=$(this).siblings("td");
            var v1=$(sibs[0]).text(); 
            var v2=$(sibs[1]).children[0].val();
            alert(v1+" & "+v2);
        });
});

HTML代码:

    <body>
  <table border="1" class="tabclass">
    <th>select</th>
    <th>Name</th>
    <th>Address</th>
    <tr>
      <td>
        <input type="checkbox" name="selectCheck" class="select" id="ch1" value="1" /> </td>
      <td><span class="name">Nitin</span></td>
      <td>
        <select name="address">
          <option>Gurgaon</option>
          <option>Noida</option>
          <option>Rohini</option>
        </select>
      </td>
    </tr>
    <tr>
      <td>
        <input type="checkbox" name="selectCheck" class="select" id="ch2" value="2" /> </td>
      <td><span class="name">Abc</span></td>
      <td>
        <select name="address">
          <option>Gurgaon</option>
          <option>Noida</option>
          <option>Rohini</option>
        </select>
      </td>
    </tr>
    <tr>
      <td>
        <input type="checkbox" name="selectCheck" class="select" id="ch3" value="3" /> </td>
      <td><span class="name">Xyz</span></td>
      <td>
        <select name="address">
          <option>Gurgaon</option>
          <option>Noida</option>
          <option>Rohini</option>
        </select>
      </td>
    </tr>
  </table>
  <br>
  <br>
  <button id="but">Test</button>
</body>

您有2个问题与代码

  • 在获得兄弟姐妹之前,您需要已检查输入的父级。

更改

var sibs=$(this).siblings("td");

var sibs=$(this).parent().siblings("td");
  • .children[0]为您提供了一个DOM对象,它没有val()方法。

更换

var v2=$(sibs[1]).children[0].val();

var v2 = $('select', sibs[1]).val(); OR  var v2=$(sibs[1]).children()[0].value;

也可以使用console.log而不是alert因为后者会停止运行UI的线程。

JS

$("#but").click(function() {
  $(".tabclass tr td input[type='checkbox']:checked").each(function() {
    var sibs = $(this).parent().siblings("td");
    var v1 = $(sibs[0]).text();
    var v2 = $('select', sibs[1]).val();
    alert(v1 + " & " + v2);
  });
});

检查小提琴

问题 :这是复选框是td子项,它没有任何兄弟姐妹。 根据你的代码, var sibs=$(this).siblings("td"); 它什么都没有。

解决方案 :是将其升级到其父级,即: td ,现在这个td有兄弟姐妹。 所以使用这段代码

var sibs=$(this).parent().siblings("td");

同时更改$(sibs[1]).children[0].val();

$(sibs[1]).children('select').val();

暂无
暂无

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

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