从HTML字符串中获取父级

时间:2012-08-31 14:27:46

标签: jquery html-table

我有一个动态创建的表行,所以我无法控制添加任何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>

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

3 个答案:

答案 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();

发现包含功能是关键,所以谢谢你们:)