[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: changeBubble или ...?
Guest
<div id="1">
<div
id="2">
<div
id="3"></div>
</div>
</div>


при клике на див с айди 3 - получаю event, в котором id= 3, а нужно получить айди первого дива, то есть 1, ведь кликая на 3, мы кликаем и на 1. или в идеале нужно получить в массив айди всех элементов, по которому прошелся клик. это было бы вообще шикарно.

когда книгу читал, помню про changeBubble нечто похожее упоминалось, но по-моему это немного про другой случай, а тут как быть?



Спустя 13 минут, 6 секунд (8.08.2010 - 14:55) Michael написал(а):
А обработчик на каком диве висит?

Спустя 21 минута, 50 секунд (8.08.2010 - 15:17) Guest написал(а):
Michael
обработчик на боди.онклике . если кликнули по нужному элементу, то происходит какое-то действие.
а мне нужно чтобы этим нужным элементом были все дивы, к которым относился клик, а не самый верхний.

Спустя 6 минут, 37 секунд (8.08.2010 - 15:24) Ice написал(а):
сэмулируй, используя коллекцию getElementsByTagName('DIV')

Спустя 26 минут, 33 секунды (8.08.2010 - 15:50) Guest написал(а):
можно поподробнее, вот функция

document.body.onclick = function(e)
{
e = e || window.event;
var target= e.target || e.srcElement;
if(target.id!=comid )//если кликнули мимо
{
//действие
}

}

comid - его я указываю сам, это и есть корневой див.
а в target.id приходит тот, по которому нажали. но поскольку нажимают всега на более верхний див, то у нас условие всегда тру.

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

Спустя 4 минуты (8.08.2010 - 15:54) Michael написал(а):
дополнительно надо обходить. Вот пример:
document.body.onclick = who;
function who(e){
var e = e || window.event;
var who = e.target || e.srcElement;
//alert(who.id); // выведет id по которому нажали
var arr = [];
arr.push(who.id);
while (true) {
if (who.tagName.toLowerCase() == 'body') break;
who = who.parentNode;
if (who.tagName.toLowerCase() == 'div') {
arr.push(who.id);
}
}

alert(arr.join(', ')); // массив по всплытию
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.