Javascript.RU

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

Глючит ajaxSuccess()
Есть древовидный классификатор, его ветки открываются с помощью AJAX. После загрузки страницы я смотрю есть ли отмеченные позиции в нем и если есть их нужно открыть и отметить.
var i = 1;
var arr = $("#catalog_kved").val().split(","); // получает массив с отмечеными id в классификаторе
$("#kved").ajaxSuccess(function(e, xhr, settings){
	$("#kved").live("openBranchKved", function(){
		$("#"+arr[i++]).children("span").click(); //отмечаем позицию
	});
	$("#kved").trigger("openBranchKved");
});

Проблема в том, что дерево открывается не до конца, срабатывает только 2 AJAX запроса и останавливается, хотя массив отмеченных позиций получаю полный.
Заметил что если после имитирования события click(); прописать alert('someVal'); тогда дерево открывается полностью.
Уже в голову ничего не идет. Буду благодарен за помощь.
Ответить с цитированием
  #2 (permalink)  
Старый 27.10.2011, 17:18
Аспирант
Отправить личное сообщение для Black_Prince Посмотреть профиль Найти все сообщения от Black_Prince
 
Регистрация: 11.07.2011
Сообщений: 64

Если после имитирования клика алертом - отрабатывает нормально, то скорее всего без него не работает потому что не успевает создаться весь DOM элементов.

попытайтесь поиграться в сторону задержки исполнения функции через setTimeout(function(){}, 100); время таймаута по желанию. В принципе 100 мс для пользователя вообще не заметно.

это немного костыль, но если с таймаутом отработает тоже нормально, как и с алертом будете знать хоть в какую сторону копать.

например, попробуйте так:
setTimeout(function(){
$("#"+arr[i++]).children("span").click(); //отмечаем позицию
}, 200);
Ответить с цитированием
  #3 (permalink)  
Старый 27.10.2011, 19:02
Новичок на форуме
Отправить личное сообщение для anoth3r Посмотреть профиль Найти все сообщения от anoth3r
 
Регистрация: 27.09.2011
Сообщений: 4

Я тоже об этом думал, уже пытался использовать setTimeout(); игрался с задержкой, но не помогло. alert(); при вызове каким-то образом прекращает выполнение работы скрипта, пока не нажмешь "ок", потом продолжает выполнение. Мне кажется копать нужно в эту сторону, но идеи у меня закончились.
Ответить с цитированием
  #4 (permalink)  
Старый 28.10.2011, 15:23
Новичок на форуме
Отправить личное сообщение для anoth3r Посмотреть профиль Найти все сообщения от anoth3r
 
Регистрация: 27.09.2011
Сообщений: 4

Пока специально делаю ошибку
$("#"+arr[i++]).children("span").click();a

и все работает. Но понятно что это криво. Как себя ведет JS или браузер во время ошибки?

Последний раз редактировалось anoth3r, 28.10.2011 в 15:30.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
страница жутко глючит в IE bushstas Оффтопик 2 02.02.2011 22:38
JsHttpRequest глючит в IE Lucky13 Internet Explorer 0 27.08.2010 16:25
анимированное меню на jquery глючит в ie leCadavreExquis jQuery 3 30.12.2009 17:30
глючит marquee с innerHTML EDbKA AJAX и COMET 6 14.08.2009 12:15
DreamWeaver глючит. SunYang Общие вопросы Javascript 11 04.06.2008 12:18