2013-08-18 5 views
0

Когда я нажимаю на мои навигационные ссылки, текущий div должен скользить вверх, а новый должен опускаться, но он работает только один раз.Слайд не работает во второй раз

jsFiddle

$(".nav-link").click(function(){ 
     var page = $(this).data("page"); 
     var active = $("#viewport").data("active"); 
     $(active).slideUp(500, function(){ 
      $(active).css({'display':'none'}); 
      $(page).slideDown(250); 
      $("#viewport").attr("data-active", page); 
     }); 
    }); 

Я понятия не имею, что это неправильно.

Спасибо!

ответ

2

Попробуйте использовать .data() вместо attr(), они не точно такой же

$(".nav-link").click(function(){ 
    var page = $(this).data("page"); 
    var active = $("#viewport").data("active"); 
    $(active).slideUp(500, function(){ 
     $(active).css({'display':'none'}); 
     $(page).slideDown(250); 
     $("#viewport").data("active", page); // The updated row 
    }); 
}); 

Для дальнейшего чтения:

+0

Спасибо, он теперь работает! – Lumoris

+0

@Lumoris См. Мое редактирование. Я добавил ссылки, которые вы должны прочитать, чтобы узнать различия между '.attr (« data-something », value)» и «.data (« something », value)». Кроме того, если мой ответ был полезен, отметьте его правильным ответом с зеленым знаком «V». – Itay

+1

Я обязательно прочитаю его;) – Lumoris

0

Попробуйте это

$(document).ready(function() { 
    $("#startseite").css({ 
     'display': 'block' 
    }); 

    $(".nav-link").click(function() { 
     var page = $(this).attr("data-page"); 
     var active = $("#viewport").attr("data-active"); 
     $(active).slideUp(500, function() { 
      $(active).css({ 
       'display': 'none' 
      }); 
      $(page).slideDown(250); 
      $("#viewport").attr("data-active", page); 
      page = 0; 
      active = 0; 
     }); 
    }); 

    /* $("#nav-slider").slider();*/ 
}); 
+0

У вас есть те же недостатки, что и [.attr()] (http://api.jquery.com/attr/) вместо [.data()] (http: //api.jquery.com/data/) – Itay