Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.06.2011, 10:58
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

Найти в родителе элемент с заданным классом
Добрый день.
Бьюсь на следующей задачей:

структура хтмл такая:

<h3 class="hide-next">1</h3>
  <div>
  <h4 class="hide-next">2</h4>
    <div>
    <h5 class="hide-next">3</h5>
      <div>
      </div>
    </div>
  </div>

и так далее.

так вот, мне нужно при клике на элементе hide-next найти всех его предков hide-next`ов. и их значение поместить в хэш-тэг страницы, чтобы при клике на самый нижний заголов в адресе получилось http://***.ru#1/2/3

получается пока что-то такое:

$('.hide-next').click(function() { 
		
		$(this).parents()
				.map(function () { 
                  		return this.prev().text; 
                })
            	.get().join("/");
         		                      
		window.location.hash = parentEls;


});


я толкьо начинаю изучать jquery, абсолютно не понимаю, что в этом коде не так, в переменную ничего не записывается

Последний раз редактировалось tadjik1, 28.06.2011 в 11:10.
Ответить с цитированием
  #2 (permalink)  
Старый 28.06.2011, 11:12
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Круто! Даже в доку посмотрел. Только не туда посмотрел: там пример ниже показывает, что можно в parents селектор задавать:
.parents(".hide-next")
Ответить с цитированием
  #3 (permalink)  
Старый 28.06.2011, 11:27
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

.map(function () { 
  return $(this).text();
})
Ответить с цитированием
  #4 (permalink)  
Старый 28.06.2011, 11:30
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

$('.hide-next').click(function() { 
		var parentEls = $(this).parents('.hide-next')
		.map(function () { 
                  	return $(this).text(); 
                })
            	.get().join("/");
                window.location.hash = parentEls;
});

переменная пустая, в хэш тэг ничего не записывается
то ли поиск не производится, то ли надо чуть другим путём идти. первоначально идея была такая, найти предка и для каждого предка вернуть содержимое предыдущего элемента.

Последний раз редактировалось tadjik1, 28.06.2011 в 11:35.
Ответить с цитированием
  #5 (permalink)  
Старый 28.06.2011, 12:18
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

$('.hide-next').click(function() { 
		
		var parentEls = $(this).parents('.hide-next')
				.map(function () { 
                  		return $(this).text(); 
                })
            	.get().join("/");
        console.info(parentEls);              
		//window.location.hash = parentEls;


	 });

вот такой код выводит в консоль пустые строчки.
Ответить с цитированием
  #6 (permalink)  
Старый 28.06.2011, 12:25
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

может быть это из-за того, что .hide-next не является родителем нашего элемента, по которому кликнули?
Ответить с цитированием
  #7 (permalink)  
Старый 28.06.2011, 13:03
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

$('.hide-next').click(function() { 
	var parentEls = $(this).parents("div").children('.hide-next')
			.map(function () { 
					return $(this).text(); 
			})
			.get().join("/");
	console.info(parentEls);              
	//window.location.hash = parentEls;
 });
Ответить с цитированием
  #8 (permalink)  
Старый 28.06.2011, 13:29
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

о, так работает. только это не до конца решает задачу. дело в том, что в одном диве может быть много элементов hide-next, кроме того, при клике на них висит функция, которая добавляет класс эктив и разворачивает следующий за ним элемент. конкретная задача — «запомнить весь путь до интересующего нас хайдера»
Ответить с цитированием
  #9 (permalink)  
Старый 28.06.2011, 13:35
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

<h3 class="hide-next">1</h3>
<div>
    <p>111</p>
    <h4 class="hide-next">11</h4>
    <div>
        <p>12123</p>
        <h5 class="hide-next">asda</h5>
        <ul>
            <li>a</li>
            <li>b</li>
        </ul>
    </div>
    <h4 class="hide-next">22</h4>
           <p>12123</p>
   </div>
<h3 class="hide-next">2</h3>
<div>
        <p>12123</p>
        <h5 class="hide-next">asda</h5>
        <div>
        <span class="hide-next">111</span>
            <p>123123</p>
        </div>    
    </div>
<h3 class="hide-next">3</h3>
<div>
        <p>12123</p>
        <h5 class="hide-next">asda</h5>
        <ul>
            <li>a</li>
            <li>b</li>
        </ul>
    </div>


вот в это констукции по клику на хайдер внутри верхнего дива (по одному из двух) функция вернет значения обоих. если сделать проверку по классу "active", который навесится после клика, тоже может вернутся оба значения, если пользователь до этого открывал предыдущий. т.е. мою задачу по созданию ссылки на конкретный хайдер это не решает

Последний раз редактировалось tadjik1, 28.06.2011 в 13:38.
Ответить с цитированием
  #10 (permalink)  
Старый 28.06.2011, 13:41
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

$('.hide-next').click(function() { 
	var parentEls = $(this).parents("div").prev('.hide-next')
			.map(function () { 
					return $(this).text(); 
			})
			.get().join("/");
	console.info(parentEls);              
	//window.location.hash = parentEls;
 });
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как выбрать следующий элемент с классом zsaz jQuery 1 02.03.2011 11:59
Найти элемент ниже скрипта Vladislav_V Javascript под браузер 8 12.01.2011 08:47
Найти элемент "A" по "HREF" Nitrogen jQuery 4 27.10.2010 19:19
Отладка. При клике на элемент найти функцию-обработчик в коде romangaag Events/DOM/Window 3 24.10.2010 03:09
Найти элемент под курсором Гость Элементы интерфейса 16 11.12.2009 14:08