使用JQuery遍历DOM结构,找到位于HTML'comment'<table> </table>之后的特定元素

时间:2010-05-26 07:57:17

标签: javascript html dom comments

我目前有一个网站源代码(无法控制源代码),其中包含需要操作的某些内容。这在表面上很简单,但是在标签上没有可以唯一标识它的唯一ID属性,因此允许进一步遍历。

以下是源代码的片段,围绕着相关标签。

   ...
    <td width="100%"> 

     <!--This table snaps the content columns(one or two)--> 

     <table border="0" width="100%"> 
   ...

基本上,HTML注释是一种获取对该元素的访问权限的简单方法。使用JQuery comment add-on this question中的and some help from snowlord comment below,我已经能够识别注释并使用'dump'扩展名检索以下输出。

$('td').comments().filter(":contains('This table snaps the content columns(one or two)')").dump();

返回;

jQuery Object {   
    0 = DOMElement [ 
        nodeName: DIV
        nodeValue: null
        innerHTML: [ 
            0 = String: This table snaps the content columns(one or two)
        ]
    ] 
}

但是我不确定如何遍历DOM中的兄弟元素。

这应该很简单,但我对JQuery没有太多的选择器经验。任何建议都表示赞赏。

2 个答案:

答案 0 :(得分:1)

我想你可以使用siblings方法:

$('td').comments().siblings('table').yourcode...

来自文档:

  

给定一个表示一组DOM元素的jQuery对象,.siblings()方法允许我们在DOM树中搜索这些元素的兄弟,并从匹配元素构造一个新的jQuery对象。

     

该方法可选择接受a   选择器表达式相同的类型   我们可以传递给$()函数。   如果提供选择器,则   元素将通过测试过滤   他们是否匹配。

答案 1 :(得分:0)

如果您对此代码有任何控制权,请在表格中输入ID。

如果你必须做一些讨厌的事情,也许你可以使用

var tables = $("table");

获取所有表格,然后通过索引确定有问题的表格......

$(tables[5]).css("color", "aqua");

一旦添加或删除表,这就会中断,但如果您无法在表中添加ID,则它似乎是一种潜在的替代方案。