我有一个动态创建的表行,所以我无法控制添加任何id或类。 该行可以按表中的任何顺序出现。每行仅包含列(td)。
更新31/08/2012 18:55
以下是html外观的示例
<table id="ctl00_MainContentPlaceholder_ctl00_CourseInfoTextList">
<tr>
<td>
<p>
<span style="font-size:1.1em"><span id="ctl00_MainContentPlaceholder_ctl00_CourseInfoTextList_ctl00_lblCourseInfoTypeText" style="font-weight:bold;">Subject Area</span></span>
<br />
<span id="ctl00_MainContentPlaceholder_ctl00_CourseInfoTextList_ctl00_lblCourseInfoText">BS, AP</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<span style="font-size:1.1em"><span id="ctl00_MainContentPlaceholder_ctl00_CourseInfoTextList_ctl01_lblCourseInfoTypeText" style="font-weight:bold;">Course Content</span></span>
<br />
<span id="ctl00_MainContentPlaceholder_ctl00_CourseInfoTextList_ctl01_lblCourseInfoText">some more text</span>
</p>
</td>
</tr>
</table>
有没有办法可以隐藏'主题区'出现的行?
答案 0 :(得分:1)
使用.closest('tr')
,它会获取DOM树的下一个<tr>
标记:
$('#ctl00_MainContentPlaceholder_ctl00_CourseInfoTextList_ctl00_lblCourseInfoTypeText').closest('tr').hide();
而不是.hide()
,您可以使用.slideUp()
,.fadeOut()
或.remove()
等
答案 1 :(得分:0)
Dunhamzzz是对的,最接近的作品很棒(+1)。
另一方面,ASP.NET webforms创建了绝对荒谬的长动态ID名称,并且将<%= Whatever.ClientID %>
放入JS(混合后端和前端)的想法对我来说是荒谬的
只需使用结尾选择器,以保持JS清洁。
$('[id$="lblCourseInfoTypeText"]').closest('tr').hide();
// ^= means search from the end - and voila
答案 2 :(得分:0)
我可能错了,但我想我可以回答我自己的问题:S
$("#ctl00_MainContentPlaceholder_ctl00_CourseInfoTextList tr:contains('Subject Area')").hide();
这有点选择性,不太可能捕捉到我们实际想要的“主题区域”的任何其他实例。
$("#ctl00_MainContentPlaceholder_ctl00_CourseInfoTextList span:contains('Subject Area')").closest('tr').hide();
发现包含功能是关键,所以谢谢你们:)