Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   onmouseout и линк (https://javascript.ru/forum/misc/30504-onmouseout-i-link.html)

devote 06.08.2012 20:49

чуть подправил код.

codingfighter 06.08.2012 21:13

хм... пытаюсь разобраться в костыле. можно поподробнее прокомментировать?

devote 06.08.2012 21:16

Цитата:

Сообщение от codingfighter
костыль какой-то слишком неповоротливый.

что значит не поворотливый?

Цитата:

Сообщение от codingfighter
что если вот мы получили элемент на который перешел курсор, как проверить находится ли он в списке дочерних элементов

именно это я и проверяю в костыле, с помощью конструкции while(){}

Цитата:

Сообщение от codingfighter
элемента с определенным айди?

всмысле? не совсем понял причем тут айди?

codingfighter 06.08.2012 21:17

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

devote 06.08.2012 21:19

Цитата:

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

ну дык и ставь, в чем проблема?

codingfighter 06.08.2012 21:24

Заработало!!! Спасибо тебе, добрый человек!)

codingfighter 06.08.2012 21:29

А то я сам уже ну просто запарился. Учитывая то что я уже весьма устал зря ты такой костыль крупный реализовал, надо было просто основы расписать ну и далее я уже сам бы все сделал :)

В общем вот основа.

событие onmouseover

function go_get(event) {
	event = event || window.event;
	var relatedTarget = event.relatedTarget || event.fromElement;
	
	var elem = document.getElementById("where_is_parent");
	
	while( relatedTarget && relatedTarget !== elem && ( relatedTarget = relatedTarget.parentNode ) ) {}

	if ( relatedTarget === elem ) {
		return;
    }

//...


событие onmouseout

function go_away(event) {
	event = event || window.event;
	var relTarg = event.relatedTarget || event.toElement;
	
	var elem = document.getElementById("where_is_parent");
	
	while( relTarg && relTarg !== elem && ( relTarg = relTarg.parentNode ) ) {}
	 
	if ( relTarg === elem ) {
		return;
	} 

//...


Все остальное - мишура :)

devote 06.08.2012 21:36

Цитата:

Сообщение от codingfighter
Все остальное - мишура

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

codingfighter 06.08.2012 21:41

Ну вот зачем тут примешивать onmouseenter и onmouseleave ?? Они не нужны, и без них хорошо, и кода меньше. Тем более еще и динамически назначать события лично мне неудобно, когда можно применить такой простой и четкий подход, сразу при инсерте html кода можно вписать функции для событий onmouseover и onmouseout. Тем более, опять же, работает кроссбраузерно.

devote 06.08.2012 21:47

Цитата:

Сообщение от codingfighter
Ну вот зачем тут примешивать onmouseenter и onmouseleave ??

а все очень просто, если элемент будет иметь огромное количство потомков, вариант с поиском родителя будет занимать какое то время, тем самым такой вариант приводит к замедлению работы скрипта. Конечно если вы не заботитесь об оптимизации и скорости. То понятно дело что достаточно повесить событие лишь на одно общее.. Но я например не приемлю лишнюю нагрузку и всегда стараюсь писать более оптимизировано. Особенно если браузер это позволяет.


Часовой пояс GMT +3, время: 09:09.