有html代码:
<body>
<table>
<tr>
<td>A</td>
<td>
<table>
<tr>
<td>B</td>
<td>...</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>C</td>
<td>
<table>
<tr>
<td>D</td>
<td>...</td>
</tr>
</table>
</td>
</tr>
</table>
<button id="click">click</button>
</body>
我想要的是在上面的html代码中获取文本A
和C
。事实上,我尝试了一些方法。我的想法是选择td
标签元素,这些元素没有table
的下降标记元素。但是,我只能使用td
的descent标记元素获取这些table
元素,jquery代码如下。
您可以尝试在jsddle
上运行。
$("#click").on("click", function () {
var ss = $("td:has(table)");
$.each(ss, function (index, value) {
alert(index + $(this).html());
});
});
感谢您的帮助。
答案 0 :(得分:2)
试试这个:
$("#click").on("click", function () {
$("td").each(function(index){
if(($(this).closest('table').parent('td').length == 0) && ($(this).find('table').length == 0))
alert(index + $(this).html());
});
});
答案 1 :(得分:0)
我的想法是选择没有表格的下降标记元素的td标记元素。
然后使用not选择器:
$("#click").on("click", function () {
var ss = $("td:not(:has(table))");
$.each(ss, function (index, value) {
alert(index + $(this).html());
});
});
答案 2 :(得分:0)
我还找到了另一个问题的解决方案,对于像我这样的新手来说,这可能更容易理解。虽然html部分没有显示标记tbody
,但确实存在。我检查并显示了table
的正文。然后选择第一个td
中每个tr
的第一个table
。 javascript代码如下。
$("#click").on("click", function () {
$("#message").text($("table").html());
var trs = $("tbody:first > tr");
$.each(trs, function (index, value) {
var td = $(this).find("td:first");
alert(td.text());
});
});