我正在尝试为每个" tr"执行一个函数。我" table"的子元素使用jquery,但此代码不识别孩子。我已将此代码用于" div"之前的基础设计,如果我改变"表"它可以很好地工作。和" tr"标签到" div"但它并没有在这里运行! 这是一个简单的设计:
<table id="tblSearch" border="1px">
<tr>
<td>Hello</td>
</tr>
<tr>
<td>Hey</td>
</tr>
<tr>
<td>Hi</td>
</tr>
<tr>
<td>There!</td>
</tr>
</table>
<table>
<tr align="center">
<input id="btnSearch" type="button" value="Search" />
</tr>
</table>
这是jquery:
$(function () {
$('#btnSearch').click(function () {
var a = $("#tblSearch").children("tr").each(function(){
alert($(this).text);
});
});
});
jsfiddle: 请注意,警报只运行一次!而且我也删除了&#34; tr&#34;为我的jsfiddle中的孩子们让代码可以运行... 有人可以帮帮我吗?
答案 0 :(得分:4)
tr
元素不是table
的子元素,属于tbody
(或thead
或tfoot
)的子元素。如果未指定tbody
元素,则会自动创建该元素。如果检查生成的DOM,您可以轻松地自己解决这个问题。
长话短说,用.find
$("#tblSearch").find("tr")
// simpler:
$("#tblSearch tr")
或在您的选择器中加入tbdoy
:
$("#tblSearch").children("tbody").children("tr")
// simpler:
$("#tblSearch > tbody > tr")
话虽如此,您还必须在td
个元素中添加实际内容,如其他答案中所述。
如果您不熟悉HTML和表格,请阅读MDN documentation。
答案 1 :(得分:2)
问题是:
tables
会自动将tbody
元素插入到DOM中,因此您不应将TR
引用为TABLE
元素的子元素。text
属性而不是jQuery text()
函数。td
无论如何(并且可能只是每行中的特定TD),因为返回整行(TR
)的文本在HTML中很少有意义。< / LI>
$(function () {
$('#btnSearch').click(function () {
var a = $("#tblSearch td:first-child").each(function () {
alert($(this).text());
});
});
});
#tblSearch td:first-child
选择器基本上说:&#34;使用id=tblSearch
查找元素,然后搜索其父级td
的任何first child
元素。注意我在JSFiddle中添加了第二列虚拟TDs单元格,因此您可以在实践中看到这一点。
有很多选择器可供选择特定的孩子,这些选择器会根据您的具体需求而有所不同,但这需要对jQuery selectors进行一些研究
答案 2 :(得分:1)
有2个问题,html无效且选择器错误
<table id="tblSearch" border="1px">
<tr>
<td>Hello</td>
</tr>
<tr>
<td>Hey</td>
</tr>
<tr>
<td>Hi</td>
</tr>
<tr>
<td>There!</td>
</tr>
</table>
然后
$(function () {
$('#btnSearch').click(function () {
var a = $("#tblSearch").find(">tbody > tr").each(function () {
alert($(this).text());
});
});
});
演示:Fiddle
答案 3 :(得分:1)
你根本不需要使用孩子。你可以创建一个选择器 -
$('#tblSearch tr td')
工作演示 - http://codepen.io/nitishdhar/pen/Aiwgm
首先,您需要修复HTML结构,将子td元素放在每个tr -
中<table id="tblSearch" border="1px">
<tr>
<td>Hello</td>
</tr>
<tr>
<td>Hey</td>
</tr>
<tr>
<td>Hi</td>
</tr>
<tr>
<td>There!</td>
</tr>
</table>
<div>
<input id="btnSearch" type="button" value="Search"/></td>
</div>
现在,您可以使用此javascript代码段提醒每个值 -
$(function () {
$('#btnSearch').click(function () {
$("#tblSearch tr td").each(function(){
alert($(this).text());
});
});
});
注意 - 这将根据需要单独提醒每个值。
答案 4 :(得分:0)
首先修复你的html并在单元格数据周围添加正确的标签
然后这应该做你想要的:
$('table#tblSearch tr').children().each(function(){
alert($(this).text());
});
答案 5 :(得分:-1)
您提供的问题中存在多个问题:
td
tr
元素
children('tr')
,它找不到,因为tr
元素没有table
(tbody
元素thead
,find()
等等,你需要调用find('td')
jQuery函数(例如tr
),然后你就可以得到单元格的文本;但是,在这种情况下,您也可以找到{{1}}并获取整行的文本。