Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.08.2014, 15:18
Интересующийся
Отправить личное сообщение для sergej_savelev Посмотреть профиль Найти все сообщения от sergej_savelev
 
Регистрация: 20.09.2013
Сообщений: 18

Найти определённого, наважно какого юродного, брата
Например, имея структуру:
<div>
	<h1>title</h1>
</div>
<h2>title</h2>

Или:
<div>
	<h1>title</h1>
</div>
<div>
	<h2>title</h2>
</div>

Или:
<h1>title</h1>
<div>
	<h2>title</h2>
</div>

Или:
<h1>title</h1>
<h2>title</h2>

Или же:
<div>
	<h1>title</h1>
</div>
<div>
	<h1>title</h1>
</div>
<div>
	<h2>title</h2>
</div>

Как одной универсальной строкой jQuery или javascript, найти определённый первый попавшийся предыдущий элемент, относительно выбранного селектора. Например, было бы логично что-то типа:
$('h2').prevAll('h1:first')

Но, увы для меня, данная строка действует лишь для 4 примера и подобных ему, во всех остальных случая нужно выдумывать что-то своё, при этом, мне, не удаётся найти конкретно первого перед выбранным, например в такой структуре:
<div>
	<h1>title</h1>
	<h1>title</h1>
</div>
<div>
	<h1>title</h1>
	<h1>title</h1>
</div>
<div>
	<h1>title</h1>
</div>
<div>
	<h2>title</h2>
</div>

Так как нужно что-то типа:
$('h2').parents().find('h1:last:first')

Не уверен, что это будет работать, хотя стоит проверить..., но всё же хочется знать, нет ли универсальной функции для поиска подобных элементов?
Ответить с цитированием
  #2 (permalink)  
Старый 03.08.2014, 15:23
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от sergej_savelev
Найти определённого, наважно какого юродного, брата
Ответить с цитированием
  #3 (permalink)  
Старый 03.08.2014, 15:24
Интересующийся
Отправить личное сообщение для sergej_savelev Посмотреть профиль Найти все сообщения от sergej_savelev
 
Регистрация: 20.09.2013
Сообщений: 18

Удивительно, но мой пример, вроде бы, как раз то самое универсальное решение
Ответить с цитированием
  #4 (permalink)  
Старый 03.08.2014, 15:25
Интересующийся
Отправить личное сообщение для sergej_savelev Посмотреть профиль Найти все сообщения от sergej_savelev
 
Регистрация: 20.09.2013
Сообщений: 18

http://jsfiddle.net/2vsB6/
Ответить с цитированием
  #5 (permalink)  
Старый 03.08.2014, 15:26
Интересующийся
Отправить личное сообщение для sergej_savelev Посмотреть профиль Найти все сообщения от sergej_savelev
 
Регистрация: 20.09.2013
Сообщений: 18

Да, наважно кокого)))
Ответить с цитированием
  #6 (permalink)  
Старый 03.08.2014, 15:30
Интересующийся
Отправить личное сообщение для sergej_savelev Посмотреть профиль Найти все сообщения от sergej_savelev
 
Регистрация: 20.09.2013
Сообщений: 18

Хотя, всё же, нет, это не то - http://jsfiddle.net/2vsB6/2/
Ответить с цитированием
  #7 (permalink)  
Старый 03.08.2014, 15:31
Интересующийся
Отправить личное сообщение для sergej_savelev Посмотреть профиль Найти все сообщения от sergej_savelev
 
Регистрация: 20.09.2013
Сообщений: 18

Нужен именно предыдущий, в моём же решении может найтись элемент который за тем от которого происходит поиск.
Ответить с цитированием
  #8 (permalink)  
Старый 03.08.2014, 15:33
Интересующийся
Отправить личное сообщение для sergej_savelev Посмотреть профиль Найти все сообщения от sergej_savelev
 
Регистрация: 20.09.2013
Сообщений: 18

Пожалуйста, не нужно шутить, реально нужен дельный совет
Ответить с цитированием
  #9 (permalink)  
Старый 03.08.2014, 15:40
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от sergej_savelev Посмотреть сообщение
Пожалуйста, не нужно шутить, реально нужен дельный совет
если нормально опишешь, в чём дело, то я попробую тебе помочь.. а так - я нифига не понял
Ответить с цитированием
  #10 (permalink)  
Старый 03.08.2014, 15:52
Интересующийся
Отправить личное сообщение для sergej_savelev Посмотреть профиль Найти все сообщения от sergej_savelev
 
Регистрация: 20.09.2013
Сообщений: 18

1
2
3
4
5
6

Из этих чисел выберем 6, число 5 будет перед ним.

1
3
2
4
6
5

В данном случае перед 6 будет элемент 4.

Это, значит, получение первого элемента, стоящего впереди выбранного.

В структуре HTML не всё так просто, элементы разбросаны по веткам и нужный элемент в таком случае может оказать очень далеко, но всё же в DOM он будет перед выбранным. Так вот как его определить? Не запутал ещё сильней?
Ответить с цитированием
Ответ



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

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