1

我有一个动态创建的表行,所以我无法控制添加任何 id 或类。该行可以以任何顺序出现在表格中。每行仅包含列 (td)。

2012 年 8 月 31 日更新 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>

有没有办法可以隐藏“主题区域”出现的行?

4

3 回答 3

1

使用.closest('tr'),它将抓取<tr>DOM 树的下一个标签:

$('#ctl00_MainContentPlaceholder_ctl00_CourseInfoTextList_ctl00_lblCourseInfoTypeText').closest('tr').hide();

代替.hide(), 您可以使用.slideUp(),.fadeOut().remove()

于 2012-08-31T14:31:14.453 回答
0

Dunhamzzz 是对的,最接近的作品很棒(+1)。

附带说明一下,ASP.NET 网络表单生成的动态 ID 名称绝对是荒谬的,而且在<%= Whatever.ClientID %>你的 JS 内部(混合后端和前端)的想法对我来说是荒谬的。

只需使用from end选择器,以保持 JS 干净。

$('[id$="lblCourseInfoTypeText"]').closest('tr').hide();
// ^= means search from the end - and voila
于 2012-08-31T14:33:49.100 回答
0

我可能是错的,但我想我可以回答我自己的问题:S

$("#ctl00_MainContentPlaceholder_ctl00_CourseInfoTextList tr:contains('Subject Area')").hide();

这更有选择性,不太可能捕捉到我们真正想要的任何其他“主题区域”实例。

$("#ctl00_MainContentPlaceholder_ctl00_CourseInfoTextList span:contains('Subject Area')").closest('tr').hide();

发现 contains 函数是这里的关键,所以谢谢大家 :)

于 2012-08-31T18:15:38.790 回答