события и вложенные элементы
<div id="main"> <div class="qwerty"><span>qwerrtt</span><div>тут куча элементов</div> <div class="qwerty"><span>qwert</span><div>тут куча элементов</div> <div class="qwerty"><span>dfdfdfd</span><div>тут куча элементов</div> ... </div> <div> вешаю обработчик события onmouseover на div который main надо получить див, который вложен (class="qwerty") и внутри которого курсор мыши дивов много, так что вешание индивидуального обработчика на каждый-бессмысленный расход памяти |
target/srcElement
|
target указывает на непоследственного адресата события
srcElement -аналог для эксплорера |
Читайте внимательно статью, там все написано.
|
повторяю, вешать на всё свою слушалку нельзя - элементов очень много
|
<div class="qwerty"> забыли закрыть или они вложенные?
<div id="main"> <div class="qwerty"> <span>qwerrtt</span> <div>тут куча элементов</div> </div> <div class="qwerty"> <span>qwert</span> <div>тут куча элементов</div> </div> <div class="qwerty"> <span>dfdfdfd</span> <div>тут куча элементов</div> </div> </div> <script type="text/javascript"> document.getElementById("main").onclick = function (event) { event = event || window.event; var target = event.target || event.srcElement; while ((" " + target.className + " ").indexOf(" qwerty ") == -1) { if (target == this) { return; } target = target.parentNode; } target.style.backgroundColor = "#f00"; }; </script> |
кажется забыл закрыть...
спс, щас опробую |
а зачем (" " + target.className + " ")
почему нельзя просто target.className ??? и зачем нужно условие target==this ? как target может быть равен объекту, создаваемому функцией? |
Потому что у элемента может быть много CSS-классов.
<… class="someclass1 someclass2 …"> CSS-классы отделяются пробельными символа, поэтому по хорошему нужно использовать регулярное выражение, но в простейшем варианте достаточно (" " + element.className + " ").indexOf(" " + CSSClassName + " ") |
спасибо
а 2й вопрос? |
Часовой пояс GMT +3, время: 04:32. |