Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Tigra Tree Menu


Автор: black_dragon 17.3.2010, 14:59
Приветствую всех.
Кусок кода из файла tree.js - Tigra Tree Menu. Основные позиции меню открываются - закрываются по двойному клику, ихние подменю уже одинарным кликом. В выделенном месте, как я понял, прописываются события одинарного и двойного клика, что нужно изменить, чтобы основные меню раскрывалось по одинарному клику. Попытался сам похимичить, ничего не вышло, прошу помощи профессионалов.
Заранее благодарен.
...
Код

function item_init () {
    var a_offset = [],
        o_current_item = this.o_parent;
    for (var i = this.n_depth; i > 1; i--) {
        a_offset[i] = '<img src="' + this.o_root.a_tpl[o_current_item.is_last() ? 'icon_e' : 'icon_l'] + '" border="0" align="absbottom">';
        o_current_item = o_current_item.o_parent;
    }
    return '<table cellpadding="0" cellspacing="0" border="0"><tr><td nowrap>' + (this.n_depth ? a_offset.join('') + (this.a_children.length
        ? '<a href="javascript: trees[' + this.o_root.n_id + '].toggle(' + this.n_id + ')" onmouseover="trees[' + this.o_root.n_id + '].mover(' + this.n_id + ')" onmouseout="trees[' + this.o_root.n_id + '].mout(' + this.n_id + ')"><img src="' + this.get_icon(true) + '" border="0" align="absbottom" name="j_img' + this.o_root.n_id + '_' + this.n_id + '" target=glav></a>'
        : '<img src="' + this.get_icon(true) + '" border="0" align="absbottom">') : '') 
        + '<a href="' + this.a_config[1] + '" target="' + this.o_root.a_tpl['target'] + '" onclick="return trees[' + this.o_root.n_id + '].select(' + this.n_id + ')" ondblclick="trees[' + this.o_root.n_id + '].toggle(' + this.n_id + ')" onmouseover="trees[' + this.o_root.n_id + '].mover(' + this.n_id + ')" onmouseout="trees[' + this.o_root.n_id + '].mout(' + this.n_id + ')" class="t' + this.o_root.n_id + 'i" id="i_txt' + this.o_root.n_id + '_' + this.n_id + '"><img src="' + this.get_icon() + '" border="0" align="absbottom" name="i_img' + this.o_root.n_id + '_' + this.n_id + '" class="t' + this.o_root.n_id + 'im">' + this.a_config[0] + '</a></td></tr></table>' + (this.a_children.length ? '<div id="i_div' + this.o_root.n_id + '_' + this.n_id + '" style="display:none"></div>' : '');
}

...

Автор: EmilRegis 17.3.2010, 17:36
в том,что вы написали на одних и тех же позициях висит и обработчик двойново клика и одинарново...при дойном клике происходит показ/скрытие подменю, а при одном клике
Код

onclick="return trees[' + this.o_root.n_id + '].select(' + this.n_id + ')"

что происходит?

Автор: black_dragon 17.3.2010, 17:54
При одинарном клике, переходит по ссылке, которая прописана в другом файле - tree_items.js

Код

['теле-видео товары', null,
      ['антенны', 'tovar.php?id=6265'], 
      ['видеокамеры', 'tovar.php?id=6519'],
      ['видеонаблюдение', 'tovar.php?id=6524'],
      ['джойстики', 'tovar.php?id=6601'],
      ['инструменты', 'tovar.php?id=6650'],      
      ['кабель', 'tovar.php?id=6682'],
      ['крепёж', 'tovar.php?id=6734'],
      ['приставки (игровые)', 'tovar.php?id=6747'],
      ['приставки dvd', 'tovar.php?id=6828'],
      ['пульты', 'tovar.php?id=7071'],
      ['телевизоры', 'tovar.php?id=7232'],
      ['шнуры', null,
         ['переходники', 'tovar.php?id=7383'], ['телефонные аксессуары', 'tovar.php?id=7427'], ['штекера', 'tovar.php?id=7473'], ['шнуры', 'tovar.php?id=7382']
      ],
],


Мне ссылка не нужна, поэтому по умолчанию оставил null. Пробовал убрать двойной клик, а его обработчик поставить на одинарный - не получилось

Автор: EmilRegis 17.3.2010, 18:59
как это не получилось?)) значит в чём-то ошибку допустили..посмотрите что фаербаг говорит

Автор: black_dragon 18.3.2010, 09:39
Сделал так (то, что стояло на двойном клике)
Код

onclick="trees[' + this.o_root.n_id + '].toggle(' + this.n_id + ')"

Ошибка: строка 31, символ 1, отказано в доступе. И при этом еще, происходит переход по пустой ссылке (пустое окно).
Строки 29-32. tree.js
Код

    for (var i = 0; i < a_items.length; i++)
        new tree_item(this, i);

    this.n_id = trees.length;


Но по одному клику стал открывать и закрывать гланые разделы

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)