Использование JQuery для обхода структуры DOM, нахождение определенного элемента <table>, расположенного после HTML-комментария - PullRequest
2 голосов
/ 26 мая 2010

В настоящее время у меня есть исходный код веб-сайта (без контроля над источником), который содержит определенный контент, которым необходимо манипулировать. На первый взгляд это будет просто, однако в рассматриваемом теге нет уникального атрибута ID, который мог бы однозначно идентифицировать его и, следовательно, обеспечить дальнейший обход.

Вот фрагмент исходного кода, окружающий рассматриваемый тег.

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

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

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

По сути, HTML-комментарий выделяется как простой способ получить доступ к этому элементу. С помощью дополнения JQuery comment из этого вопроса , и некоторой справки из комментария снежного повелителя ниже я смог определить комментарий и получить следующий вывод используя расширение '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 ]

1 голос
/ 26 мая 2010

Я думаю, вы могли бы использовать метод Братья и сестры :

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

Из документов:

Учитывая объект jQuery, который представляет собой набор элементов DOM, метод .siblings () позволяет нам выполнять поиск по элементам этих элементов в дереве DOM и создавать новый объект jQuery из соответствующих элементов.

Метод может принимать выражение выбора того же типа что мы можем перейти к функции $ (). Если селектор поставляется, элементы будут отфильтрованы тестированием соответствуют ли они этому.

0 голосов
/ 26 мая 2010

Если у вас есть какой-либо контроль над этим кодом, поместите идентификатор в таблицу.

Если вам нужно сделать что-то неприятное, возможно, вы могли бы использовать

var tables = $("table");

Чтобы получить все таблицы, а затем определить соответствующую таблицу по индексу ...

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

Это прерывается, как только таблица добавляется или удаляется, но если вы не можете добавить идентификатор в таблицу, это кажется потенциальной альтернативой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...