Javascript.RU

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

Родительские элементы
Добрый день допустим есть такая верстка

<div class='one'>
	<div class='two'>
		<div class='click'>
			С него переходим
		</div>
	</div>
</div>



<div class='one'>
	<div class='two'>
		<div class='three'>
			<div class='click'>
				На него переходим
			</div>
		</div>
	</div>
</div>

<div class='one'>
	<div class='click'>
		На него переходим
	</div>
</div>


При переведение курсора с одного элемента с классом 'click' на другой мне нужно получить индексы элемента с классом 'one'. Индекс с которого перешли и индекс на который перешли

проблема заключаеться в том, что я не могу найти нужного оператора поиска родителя. Т.к. структура блоков разная. Естествено parent() Тут не подходит. Ну или я не могу понять как правильно им воспользоваться.

пример js кода (Неправильный пример=DDD)

$('.click').mouseleave(function(e){
		alert($( e.relatedTarget ).parent().index());
		alert($(this).parent().index());
	});


Заранее большое спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 28.09.2018, 15:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Shuryga,

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
var one = $(".one"), old = "null";
one.on("mouseenter", ".click, .click-on", function(event) {
  var index = one.index(event.delegateTarget);
  $("p").html("from " + old + " to " + index);
  old =  index;
})

});
  </script>
</head>

<body>
<p>index</p>
<div class='one'>
	<div class='two'>
		<div class='click'>
			С него переходим
		</div>
	</div>
</div>



<div class='one'>
	<div class='two'>
		<div class='three'>
			<div class='click-on'>
				На него переходим
			</div>
		</div>
	</div>
</div>

<div class='one'>
	<div class='click-on'>
		На него переходим
	</div>
</div>


</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 28.09.2018, 16:26
Аспирант
Отправить личное сообщение для Shuryga Посмотреть профиль Найти все сообщения от Shuryga
 
Регистрация: 24.09.2014
Сообщений: 44

Большое спасибо за ответ.

Пытаюсь сделать так:

$('.click').mouseleave(function(e){
     alert($('.one').index(e.delegateTarget));
});



Но получаю "-1"

delegateTarget работает только с делегированием?
Ответить с цитированием
  #4 (permalink)  
Старый 28.09.2018, 16:29
Аспирант
Отправить личное сообщение для Shuryga Посмотреть профиль Найти все сообщения от Shuryga
 
Регистрация: 24.09.2014
Сообщений: 44

Все Вижу что только с делегированием.
Ответить с цитированием
  #5 (permalink)  
Старый 28.09.2018, 16:39
Аспирант
Отправить личное сообщение для Shuryga Посмотреть профиль Найти все сообщения от Shuryga
 
Регистрация: 24.09.2014
Сообщений: 44

Есть один ньюанс. Событие должно происходить когда мышка покидает блок (К сожалению это обязательно)

Пробую так

$('.one').on("mouseleave", ".click", function(event) {
		alert($('.one').index(event.delegateTarget));
		alert($('.one').index(event.currentTarget));
	});


С какого ухожу я получаю индекс. А на который перехожу не получаю(
Ответить с цитированием
  #6 (permalink)  
Старый 28.09.2018, 17:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Shuryga
Событие должно происходить когда мышка покидает блок
Сообщение от Shuryga
А на который перехожу не получаю(
не знаю телепатии за jquery, не могу предложить решения.
Ответить с цитированием
  #7 (permalink)  
Старый 28.09.2018, 17:23
Аспирант
Отправить личное сообщение для Shuryga Посмотреть профиль Найти все сообщения от Shuryga
 
Регистрация: 24.09.2014
Сообщений: 44

Нашел решение всем большое спасибо )))))))))))))))))))

$('.click').mouseleave(function(e){
    alert($(this).closest('.one').index('.one'));
    alert($( e.relatedTarget ).closest('.one').index('.one'));
});
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исключить из переменной elems все элементы которые имеют родственные элементы с класс Fenix-77 Общие вопросы Javascript 2 12.04.2016 16:20
Элементы добавленные в dom freelancerphpcss Events/DOM/Window 4 30.07.2015 18:00
Как вернуть div и все вложенные в него элементы в первоначальное состояние? lucky89 Общие вопросы Javascript 17 26.02.2015 18:41
Jquery не учитывает дочерние элементы metaller92 jQuery 2 17.06.2013 11:58
Выбрать элементы, в которые вложен элемент с id. Вадимчег jQuery 3 24.11.2012 10:38