Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Присвоить класс родительскому элементу списка (https://javascript.ru/forum/jquery/15289-prisvoit-klass-roditelskomu-ehlementu-spiska.html)

newcoder 20.02.2011 17:01

Присвоить класс родительскому элементу списка
 
Парни выручайте, я завис на одной задачке:
Есть список
<ul id="nav">
<li><a href="#">Ссылка</a></li>
<li><a href="#">Ссылка</a></li>
<li><a href="#">Ссылка родитель</a>
     <ul class="sub-nav">
        <li><a href="#">дочерняя ссылка</a></li>
        <li><a href="#">дочерняя ссылка</a></li>
      </ul>
</li>
</ul>

Нужно проверить, если у списка есть дочерние элементы, то присвоить на ссылку родитель класс
Т.е в итоге хочется получить такое:

<ul id="nav">
<li><a href="#">Ссылка</a></li>
<li><a href="#">Ссылка</a></li>
<li><a class="with-drop" href="#">Ссылка родитель</a>
     <ul class="sub-nav">
        <li><a href="#">дочерняя ссылка</a></li>
        <li><a href="#">дочерняя ссылка</a></li>
      </ul>
</li>
</ul>

Буду молиться на того, кто мне поможет)))

Aetae 20.02.2011 17:31

var nv=document.getElementById('nav');
if(nv.firstChild)nv.parentNode.className+=' hasChild';

...или если под "дочерними элементами" у вас внезапно подразумевались дочерние списки:
if(nv.getElementsByTagName('ul').length)nv.parentNode.className+=' hasChild';

Matre 21.02.2011 10:27

(function () {
	var elems = document.getElementById("nav").getElementsByTagName("LI");
	for (var i = 0; i < elems.length; i++) {
		if (elems[i].getElementsByTagName("UL").length !== 0) // И теребишь ей клитор
			elems[i].getElementsByTagName("A")[0].className = "with-drop"; // И гладишь её ональные губы
	}
})();

FINoM 23.02.2011 05:44

Aetae,
if(nv.firstChild)
А не может ли случиться что этот элемент будет являться TextNode?

newcoder
$('ul.nav li').each(function(){
	if ($(this).children('ul.sub-nav').length) {
		$(this).children('a').addClass('with-drop');
	}
});

Matre 23.02.2011 08:22

$("#nav li:has(ul.sub-nav) > a").addClass("with-drop");


:)

newcoder 28.02.2011 02:08

Большое человеческое спасибо парни, за решение вопроса!! Эта инфа просто сокровище, мне частенько нужно присваивать классы, но приходится в пхп ковыряться)) а зачем в пхп если можно в жс 2 строки прописать :))) Спасибо!


Часовой пояс GMT +3, время: 03:12.