Показать сообщение отдельно
  #1 (permalink)  
Старый 28.03.2013, 17:26
2de 2de вне форума
Аспирант
Отправить личное сообщение для 2de Посмотреть профиль Найти все сообщения от 2de
 
Регистрация: 26.10.2010
Сообщений: 78

Правильный контекст this и наследование с помощью prototype
Всем привет!

Решил разобраться с наследованием с помощью prototype и сразу применить на практике. Через некоторое время столкнулся с проблемой следующего характера.

Разметка:

<ul id="tree">
 <li><i></i><a href="menu-add.html">Добавление меню</a></li>
 <li>
  <i></i><a href="phrases.html">Фразы</a>
  <ul><li><i></i><a href="phrases-edit.html">Редактирование</a></li></ul>
 </li>
 ...
</ul>
<script type="text/javascript">
new Tree("menu");
</script>


Скрипт:

function Tree(Element)
{
 if(typeof Element === "string") Element = document.getElementById(Element);

 Element.onclick = this.Click;
}

Tree.prototype.Click = function(E)
{
 E = E || window.event;
 var Target = E.target || E.srcElement;

 if(Target.tagName === "I") здесь нужно вызвать метод Toggle
 else if(Target.tagName === "A") return false;
}

Tree.prototype.Toggle = function(Element)
{
 Element.parentNode.className = Element.parentNode.className === "show" ? "" : "show";
}


В связи с тем что метод Click вызван в контексте елемента страницы то, this указывает на него, а мне нужно вызвать метод Toggle объекта Tree. Как это правильнее всего сделать?
Ответить с цитированием