события и вложенные элементы
<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, время: 21:47. |