JQuery Проверить родительский класс - PullRequest
1 голос
/ 14 апреля 2011

Я уверен, что мне просто не хватает чего-то простого, но я хочу изменить фоновое изображение CSS всех элементов 'li', которые не являются прямыми потомками ul, с классом 'library_display'.

HTML :

<ul class="library_display treeview">
    <li>General Competencies
        <ul>
            <li>Achievement Orientation
                <ul>
                    <li class="modal" id="itm_59_modal">
                        <a href="#">Argle Bargle</a>
                   </li>
                </ul>
            </li>
            <li>
                <a href="myUrl" class="modal" id="itm_14_modal">Adaptability</a>
            </li>
        </ul>
    </li>
    <li>Leadership Competencies
        <ul>
            <li>
                <a href="myUrl" class="modal" id="itm_22_modal">Critical Judgment</a>
            </li>
        </ul>
    </li>
    <li>
        <a href="myUrl" class="modal" id="itm_2_modal">Change Management</a>
    </li>
</ul>

JS : это код (в выражении document.ready), который выполняется:

if (!$('.treeview li').parents('ul:first').hasClass("library_display")){
    $('.treeview li').css({'background':'url(branch.png) 0px 0px no-repeat'});
}

Сейчас это никак не влияет.Если я удаляю оператор if, он будет оказывать влияние на все элементы списка, а не только на те, которые я хочу.

Редактировать: Спасибо за блок кода.У меня были некоторые проблемы с тем, чтобы заставить это работать должным образом.

Ответы [ 3 ]

3 голосов
/ 14 апреля 2011

Это повлияет только на элементы <li>, которые находятся как минимум на двух уровнях в пределах ul.library_display

$(".library_display li li").css({
   'background':'url(branch.png) 0px 0px no-repeat'
});

jQuery Документация: http://api.jquery.com/descendant-selector/

0 голосов
/ 14 апреля 2011
if (!$('.treeview li').parents('ul:first').hasClass("library_display")){
    $('.treeview li').css({'background':'url(branch.png) 0px 0px no-repeat'});
}

Это утверждение верно для одних и ложно для других, что не делает его действительным if утверждением.Вы бы хотели либо перебрать все li s, либо сделать огромный селектор:

$('.treeview li').each(function()
{
  if ($(this).parents('ul:first').hasClass('library_display')
  {
    $(this).css('background', 'url(branch.png) 0px 0px no-repeat');
  }
});
0 голосов
/ 14 апреля 2011

Попробуйте это:

$('ul.library_display').children('li').find('li').css(...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...