Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.01.2010, 11:55
Интересующийся
Отправить личное сообщение для javascript Посмотреть профиль Найти все сообщения от javascript
 
Регистрация: 31.01.2010
Сообщений: 11

Древовидное меню проблема с toggle
Господа, окажите пожалуйста помощь в решение следующей проблемы:
ПХП формирует дерево приблизительно следующей структуры:
+ продукт 1
- продукт 2
   - продукт 2.1
      + продукт 2.1.1
      + продукт 2.1.2
   + продукт 2.2
   + продукт 2.3
+ продукт 3


Все через список:
<ul>
 <li>
  <a class=opened> - </a>продукт 2
   <ul>
    <li>
     <a class=opened> - </a>продукт 2.1
      <ul>
       <li>
        <a class=closed> + </a>продукт 2.1.1
       <li>
       <li>
        <a class=closed> + </a>продукт 2.1.2
       </li>
      </ul>
     </li>
     <li>
      <a class=opened> - </a>продукт 2.2
     </li>
     <li>
      <a class=opened> - </a>продукт 2.2
     </li>
    </ul>
   <li>
 </ul>


Из этого ПХП файла подгружается js скрипт:

$(document).ready(function(){
  //вешаю обработчик события на клик по ссылке + или -
  $("a").live("click", function () {
   var t = this;
    //раскрываю ветви дерева
    if($(t).hasClass("closed")){
       //здесь через ajax по клику на + подгружаю ветви 
    }

    //скрваю или раскрываю ветви сформированные пхп или подгруженные через ajax
    if($(t).hasClass("opened")){
         // переключаю видимость
         $(t).toggle(function(){
             $(t).nextAll("ul").hide();
	$(t).html(imgClosed);
          }, function(){
	$(t).nextAll("ul").show();
	$(t).html(imgOpened);
          });
      }

   });

 });


Но когда страница загружена, если нажать на "-" , например, "продукт 2" то при первом клике список не закроется, а начнет закрываться только при втором !?!?!?!?

Никак не могу понять природу такого поведения.......и что можно сделать чтоб исправить этот баг?

Последний раз редактировалось javascript, 31.01.2010 в 12:00.
Ответить с цитированием
  #2 (permalink)  
Старый 02.02.2010, 12:24
Интересующийся
Отправить личное сообщение для javascript Посмотреть профиль Найти все сообщения от javascript
 
Регистрация: 31.01.2010
Сообщений: 11

Кто-нить.....хэээээээээлп
Заманался уже совсем, всё прогуглил....не получается никак (
Ответить с цитированием
  #3 (permalink)  
Старый 06.02.2010, 04:28
Аспирант
Отправить личное сообщение для Urfin Посмотреть профиль Найти все сообщения от Urfin
 
Регистрация: 22.07.2009
Сообщений: 85

Попробуйте воспользоваться консолью файербага.
Посмотрите, что происходит при первом клике, при втором.
Очень часто в консоли все видно и становится понятно.
Вообще, ваш код не очень оптимизирован.
Вот такой вариант тоже можно попробовать:
<ul>
 <li>
  <a> <img src="plus.png" style="display:none" /><img src="minus.png" /> </a>продукт 2
   <ul>
    <li>
     <a> - </a>продукт 2.1
      <ul>
       <li>
        <a> + </a>продукт 2.1.1
       <li>
       <li>
        <a> + </a>продукт 2.1.2
       </li>
      </ul>
     </li>
     <li>
      <a> - </a>продукт 2.2
     </li>
     <li>
      <a> - </a>продукт 2.2
     </li>
    </ul>
   <li>
 </ul>
</li>
</ul>


$(document).ready(function(){
		$('a').live('click',function(){
			$(this).addClass('rich'). // при первом клике добавляем метку ссылке чтобы повторно не обращаться к ajax
			next('ul').slideToggle().end().
			find('img').toggle(); // здесь меняем видимость у рисунков плюса и минуса. Вначале должна быть разная.							
		});	
		$('a:not(.rich)').live('click', function(){/* здесь подгрузка через ajax для нетронутых ранее ссылок*/})
	});
Ответить с цитированием
  #4 (permalink)  
Старый 12.02.2010, 19:59
Интересующийся
Отправить личное сообщение для javascript Посмотреть профиль Найти все сообщения от javascript
 
Регистрация: 31.01.2010
Сообщений: 11

Спасибо! С помощью вашего примера решил проблему.
P.s. было бы конечно интересно выяснить почему же все таки не срабатывал при первом клике toggle, firebug вообще молчит........ еще раз спасибо за помощь.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа Sothink DHTML. Проблема с выпадающем меню в Opere и Мозила. wertor Javascript под браузер 1 27.01.2010 17:19
Проблема с меню для кнопки в Гриде progi2007 ExtJS 0 03.08.2009 14:16
Проблема с меню не корректно отображается в браузерах отличных от IE (т.е. FF Opera) 3xv Элементы интерфейса 2 16.04.2009 19:51
Проблема с меню в ИЕ Vegas Internet Explorer 0 05.04.2009 19:11
Проблема с меню 856 Общие вопросы Javascript 3 28.07.2008 14:29