Как изменить цвет фона <tr>, который содержит определенную ссылку? - PullRequest
1 голос
/ 14 ноября 2011

Я хочу изменить цвет фона элемента "tr", который содержит данную ссылку.

Мой фрагмент:

var color1 = "red";
var targetForum = $("tr a[href*='showforum=28']");

targetForum.each ( function () {
    var thisRow = $(this).parent ().parent ().parent ();        
    thisRow.style.backgroundColor = color1;
}

Я пробовал значения rgb и hex, но ничего не происходит с цветом bg.

Целевая страница выглядит следующим образом:

<tr>
    <td class="row2" align="center">
    <td class="row1" width="3%" align="center">
    <td class="row1">
    <td class="row1" width="15%">
        <span class="forumdesc">
            <a title="Off-Topic" href="showforum=41">ForumABC</a>
        </span>
    </td>
    <td class="row1" align="center">
    <td class="row2" align="center">
    <td class="row1" align="center">223460</td>
    <td class="row1">
</tr>

Ответы [ 2 ]

1 голос
/ 14 ноября 2011
  1. Похоже, вы используете jQuery здесь, как он загружается (по форуму или GM)
  2. Когда форум загружается jQuery, вы должны получить доступ к jQuery с помощью unsafeWindow.$
  3. parent () возвращает jQuery-Object, вы не можете установить свойство style для jQuery-объекта с помощью obj.style, используйте css() вместо

Я бы предложил это: (вам не нужен каждый)

unsafeWindow.$("tr:not(:has(tr)):has(a[href*='showforum=28'])").css('backgroundColor','red');
0 голосов
/ 14 ноября 2011

Установить стиль способом jQuery (как было указано, thisRow является объектом jQuery).
Это было бы: thisRow.css ('backgroundColor', color1);.

Однако , если на сайте используется фоновое изображение, цвет может не работать. Использование:

thisRow.css ('background', color1);

, чтобы убедиться, что любое изображение BG не маскирует изменение цвета.

Наконец, сайт может стилизовать BG ячеек таблицы, что может снова замаскировать изменение цвета строки. Чтобы обойти это, стилизуйте также элементы <td>.

Так это будет:

targetForum.each ( function () {
    var thisRow = $(this).parent ().parent ().parent ();        
    thisRow.css ('background', color1);
    thisRow.find ("td").css ('background', color1);
}
...