Селектор изменяет и потомков.
Есть такой вот код:
var firstText = $('#nav > li ').has('ul').find('a').html(); $('#nav > li ').has('ul').find('a').html('+ ' + firstText); Меню структурой: <ul id='nav'> <li><a>link</a> <ul class='sub'> <li><a>link</a> <ul class='subsub'> <li><a>link</a></li> <li></li> <li></li> <li></li> </ul> </li> <li><a>link</a></li> </ul> </li> <li><a>link</a></li> <ul> Нахожу список по Id и проверяю есть ли у его пунктов вложенные потомки списки, если да то в выбраном пункте нахожу а и в него пихаю +, но почему то этот код пробегает по всему меню и получается: 1. Главная/ + Блог / Контакты 2. + Блог / + Блог / +Блог 3. + Блог / + Блог / +Блог Возможно я не так понимаю? |
:-? Duda.Ml1986@gmail.com,
$('#nav > li ').has('ul').find('a').html(любое содержимое) -- находит и меняет все ссылки в элементе li $('#nav > li ').has('ul').find('a').html(); находит содержимое только первой ссылки |
jQuery(function () { $('#nav>li').has('ul').find('>a').each(function(i, el){ $(el).html('+ ' + $(el).html()); }); }); или jQuery(function () { $('#nav>li').has('ul').find('>a').each(function(){ $(this).html('+ ' + $(this).html()); }); }); а так с подпунктами jQuery(function () { $('#nav li').has('ul').find('>a').each(function(){ $(this).html('+ ' + $(this).html()); }); }); |
Duda.Ml1986@gmail.com,
вариант :write: <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <script src="http://code.jquery.com/jquery-latest.js"></script> <style type="text/css"> li > ul { display: none; } li{ list-style-type: none; width: 100px; } a.plus, a.minus{ cursor: pointer; } a::before { content: "▪ "; margin-left: +2px; } .plus::before { content: "+ "; margin-left: 0px; } .minus::before { content: "- "; margin-left: 0px; } </style> </head> <body> <ul id='nav'> <li><a>link</a> <ul class='sub'> <li><a>link</a> <ul class='subsub'> <li><a>link</a></li> <li></li> <li></li> <li></li> </ul> </li> <li><a>link</a></li> </ul> </li> <li><a>link</a></li> </ul> <script> $(function () { $('a:has(+ul)').click(function (e) { $(this).toggleClass('plus minus') e.preventDefault(); e.stopPropagation(); $('+ul', this).slideToggle(); }).addClass('plus'); }) </script> </body> </html> |
Часовой пояс GMT +3, время: 13:53. |