Показать сообщение отдельно
  #7 (permalink)  
Старый 25.08.2011, 17:58
Аспирант
Отправить личное сообщение для Black_Prince Посмотреть профиль Найти все сообщения от Black_Prince
 
Регистрация: 11.07.2011
Сообщений: 64

$.ajax({
    url: 'engine/ajax.php',
    data: ({link : link,}),
    type : "POST",
    success: function (data) {  
        $("#menu li").removeClass("active");
        $(".left").html(data).css("opacity","0").animate({opacity:'1'},1500);
    },
     error: function(){ 
         alert ("No PHP script: ");
      } 
   }); 
   $(this).addClass("active");
   return false;


Господа, никто не заметил, что классы удаляются в success для ajax, а назначается класс вне ajax функций?

Дело в том что выполняется асинхронный запрос. Т.е. обработчик кода доходит до функции ajax, запускает его в отдельном потоке и идет дальше. Т.о. сначала успевает отрабатывать назначение класса, а уже после приходит ответ от сервера, и по успеху - убираются классы.

Решение поставьте обе строки
$("#menu li").removeClass("active"); и $(this).addClass("active"); друг рядом с другом. например:

var elem = $(this);
$.ajax({
    url: 'engine/ajax.php',
    data: ({link : link,}),
    type : "POST",
    success: function (data) {  
        $("#menu li").removeClass("active");
        elem.addClass("active");
        $(".left").html(data).css("opacity","0").animate({opacity:'1'},1500);
    },
     error: function(){ 
         alert ("No PHP script: ");
      } 
   }); 
   return false;


и будет вам щастя
Ответить с цитированием