РЕДАКТИРАНЕ: нов проблем е, че въпреки че current_slide.showCurrentSlide(); е вътре във функцията hidePrevSlide, кодът showCurrentSLide се изпълнява преди анимацията в hidePrevSlide да е завършена.
Опитвам се да създам уебсайт, където ако щракнете върху ‹ li > тогава ‹ li > ще получи добавен клас към него. След това ще плъзне текущия видим екран нагоре и ще го скрие и след това ще покаже екрана, съответстващ на ‹ li > (например, ако ‹ li > е „начало“, тогава ще плъзне текущия съществуващ екран нагоре и ще го скрие и след това би трябвало да е екранът „#homeSlide“). Ето моят код.
$(document).ready(function(){
hideItems(); //this function basically hides all the screens / slides.. The words 'screen' and 'slides' are interchangeable for the time being.
$('#homeSlide').fadeIn(1000); //the default screen to be shown is the home screen
$('#homeSlide').addClass('current'); //to signify that this is the current visible screen
$('#home').addClass('clicked'); //#home is the <li>, so it adds the .clicked class to the <li>
$('#sidebar ul a li').click(function(){ //loops through all <li>'s in the sidebar if an <li> is clicked
var current_slide = $(this);
$('#sidebar ul .clicked').removeClass('clicked'); // when an <li> is clicked, remove .clicked class from any other <li>'s
current_slide.addClass('clicked'); // add .clicked class to the clicked <li> ($(this))
hidePrevSlide(function(){
alert('enter showing step');
current_slide.showCurrentSlide();
});
});
});
и ето моята функция hidePrevSlide.
function hidePrevSlide(){
var test = $('.current').attr('id');
test = "#" + test; // surrounds the id with a # and the word 'Slide'. This is the id of the screen which should slideUp
$(test).slideUp( function () {
$(test).hide();
$(test).removeClass('current');
});
alert('finished hiding step. Should enter showing step now');
};
Сега, когато стартирам кода, той казва „завършена стъпка на скриване“. Трябва да влезе в стъпката за показване сега“, но не казва „въведете стъпката за показване“, така че не влиза в стъпката, която трябва да се изпълни, след като функцията hidePrevSlide е готова. Как така?
hidePrevSlide
никога не извиква функцията, която предавате като аргумент. - person Barmar   schedule 14.10.2013