[英]how to fetch nested elements in jquery
当天早些时候,我遇到了jquery's
find
方法。 现在我无法从下面的html表中获取嵌套元素:
我想要做的是:在每个复选框选中的列,即select
,我想打印兄弟姐妹的值,即name
和address
但我无法做到这一点。 以下是我的代码:
$("#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.