Показать сообщение отдельно
  #4 (permalink)  
Старый 22.08.2012, 12:23
Новичок на форуме
Отправить личное сообщение для LMnet Посмотреть профиль Найти все сообщения от LMnet
 
Регистрация: 08.09.2011
Сообщений: 5

Я понял, в чем была проблема.
Если посмотреть на данный код:
clickHandler.call(this, event);
window.location = $(this).attr('href');

То видно, что сперва вызывается функция clickHandler, а потом уже происходит переход по ссылке. Но JS асинхронный язык, поэтому он не ждет результата выполнения предыдущей функции, а идет дальше. В моем случае, просто не успевал выполниться аякс запрос внутри функции clickHandler, происходило сразу выполнение кода:
window.location = $(this).attr('href');

Решением в моем случае являлось выполнение перехода по ссылке с небольшой задержкой. Я использовал функцию setTimeout и передал в нее замыкание, внутри которого выполнялся переход:
//тут левая кнопка обрабатывается
clickHandler.call(this, event);
var href = $(this).attr('href');
function link(){
	var func = function(){
		window.location = href;
	}
	return func();
}
setTimeout(link, 50);
return false;
Ответить с цитированием