Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.03.2014, 20:54
Аватар для Duda.Ml1986@gmail.com
Профессор
Отправить личное сообщение для Duda.Ml1986@gmail.com Посмотреть профиль Найти все сообщения от Duda.Ml1986@gmail.com
 
Регистрация: 01.09.2011
Сообщений: 263

Селектор изменяет и потомков.
Есть такой вот код:
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. + Блог / + Блог / +Блог

Возможно я не так понимаю?
Ответить с цитированием
  #2 (permalink)  
Старый 23.03.2014, 21:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,080

Duda.Ml1986@gmail.com,
$('#nav > li ').has('ul').find('a').html(любое содержимое) -- находит и меняет все ссылки в элементе li
$('#nav > li ').has('ul').find('a').html(); находит содержимое только первой ссылки

Последний раз редактировалось рони, 23.03.2014 в 21:23.
Ответить с цитированием
  #3 (permalink)  
Старый 23.03.2014, 21:34
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

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());
        });
      });

Последний раз редактировалось Vlasenko Fedor, 23.03.2014 в 21:48.
Ответить с цитированием
  #4 (permalink)  
Старый 23.03.2014, 22:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,080

Duda.Ml1986@gmail.com,
вариант
<!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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение шрифта у селектора и его потомков vitaliy43 Общие вопросы Javascript 2 03.12.2013 12:11
Селектор первого потомка FINoM Общие вопросы Javascript 51 26.12.2011 12:10
Динамический селектор raindew Элементы интерфейса 3 20.11.2011 18:37
Предыдущий селектор KupueIIIKo jQuery 1 05.10.2011 01:27
.hide() для всех потомков и их потомков sholkyman jQuery 1 15.06.2011 12:45