<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 написал(а):
можно поподробнее, вот функция
comid - его я указываю сам, это и есть корневой див.
а в target.id приходит тот, по которому нажали. но поскольку нажимают всега на более верхний див, то у нас условие всегда тру.
вот можно теперь поконкретнее, как решить проблему?
лучше всего было бы получить массив с айди всех дивов, к которым относился клик.
чтобы потом проверить, был ли среди них comid
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(', ')); // массив по всплытию
}