цвет фона для элемента, который расположен перед идентифицированным тегом? - PullRequest
0 голосов
/ 30 января 2012

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

<ul id="one">
  <li><a href='#'>text0</a></li>
  <li><a href='#'>text1</a>
  <ul>
    <li><a href='#'>text2</a></li>
    <li><a href='#'>text3</a>
      <ul>
        <li class="item-1"><a href='#' class='identified'>item1</a></li>
        <li class="item-2"><a href='#'>item2</a></li>
        <li class="item-3"><a href='#'>item3</a></li>
      </ul>
    </li>
    <li class="item-c">C</li>
  </ul>
  </li>
  <li class="item-iii">III</li>
</ul>

теперь я хочу назначить цвет фона для элемента 1-го уровня, если я знаю, что class = 'identified', я хочу изменить цвет фона text1 что я могу сделать, чтобы сделать эту работу.?

Ответы [ 2 ]

0 голосов
/ 30 января 2012

Хорошо "text1" - это первый элемент привязки, принадлежащий родительскому элементу родительского элемента родительского элемента родительского элемента. Таким образом, вы можете сделать это:

$(".identified").parent().parent().parent().parent().parent()
                .children("a").css({"background-color" : "blue" });

(Исправьте фактическое изменение CSS соответствующим образом и перепроверьте, правильно ли я учел родителей.)

Но вышесказанное является хрупким, потому что оно основано на точном знании того, сколько уровней принадлежит иерархии. Если бы вы могли назначить класс всем элементам li верхнего уровня, скажем, классу "topMenu", то вы могли бы сделать это:

$(".identified").closest(".topMenu")
                .children("a").css({"background-color":"blue"});

Метод .closest() идет вверх по дереву DOM от текущего элемента, пока не найдет тот, который соответствует предоставленному селектору.

РЕДАКТИРОВАТЬ: Извините, вам не нужно добавлять класс, я только что понял, что в вашей разметке уже достаточно информации для непосредственного выбора соответствующего предка li элемент:

$(".identified").closest("#one > li")
                .children("a").css({"background-color":"red"});

Демо: http://jsfiddle.net/WVd8W/

0 голосов
/ 30 января 2012

Попробуйте использовать метод jQuery closest.

$('li.identified').closest('ul').closest('ul').prev().css('background', 'red');

.closest() ссылка: http://api.jquery.com/closest/

...