i'm really new to javascript, so i'm using a library that do page transitions using html attributes, i wonder how can i make a function that goes to a specific page here is the library code:
So what i know is when you run the animation function it ask for attributes "data-goto" with this you select the page number you want to go and with "data-animation" you chose the type of animation, i can make it work from the html side, but i want to do it form javascript side using a function:
// All pt-trigger click event calls this function
// This function gets the animation id, goto page that we define in `data-animation` and 'data-goto' repectively.
function Animate($pageTrigger) {
// Checking for 'data-animation' and 'data-goto' attributes.
if (!($pageTrigger.attr('data-animation'))) {
alert("Transition.js : Invalid attribute configuration. \n\n 'data-animation' attribute not found");
return false;
}
else if (!($pageTrigger.attr('data-goto'))) {
alert("Transition.js : Invalid attribute configuration. \n\n 'data-goto' attribute not found");
return false;
}
var animation = $pageTrigger.data('animation').toString(),
gotoPage, inClass, outClass, selectedAnimNumber;
// Check if the delimiter '-' is present then create an animation array list.
if(animation.indexOf('-') != -1) {
var randomAnimList = animation.split('-');
selectedAnimNumber = parseInt(randomAnimList[(Math.floor(Math.random() * randomAnimList.length))]);
}
else {
selectedAnimNumber = parseInt(animation);
}
// Checking if the animation number is out of bound, max allowed value is 1 to 67.
if (selectedAnimNumber > 67) {
alert("Transition.js : Invalid 'data-animation' attribute configuration. Animation number should not be greater than 67");
return false;
}
switch(selectedAnimNumber) {
case 1:
inClass = 'pt-page-moveFromRight';
outClass = 'pt-page-moveToLeft';
break;
case 2:
inClass = 'pt-page-moveFromLeft';
outClass = 'pt-page-moveToRight';
break;
case 3:
inClass = 'pt-page-moveFromBottom';
outClass = 'pt-page-moveToTop';
break;
}
// This will get the pt-trigger elements parent wrapper div
var $pageWrapper = $pageTrigger.closest('.pt-wrapper');
var currentPageIndex = $pageWrapper.data('current'), tempPageIndex,
$pages = $pageWrapper.children('div.pt-page'),
pagesCount = $pages.length,
endCurrentPage = false,
endNextPage = false;
gotoPage = parseInt($pageTrigger.data('goto'));
// check if 'data-goto' value is greater than total pages inside 'pt-wrapper'
if (!(pagesCount < gotoPage)) {
tempPageIndex = currentPageIndex;
if($pageWrapper.data('isAnimating')) {
return false;
}
// Setting the isAnimating property to true.
$pageWrapper.data('isAnimating', true);
// Current page to be removed.
var $currentPage = $pages.eq(currentPageIndex);
// Checking gotoPage value and decide what to do
// -1 Go to next page
// -2 Go to previous page
// 0+ Go to custom page number.
// NEXT PAGE
if (gotoPage == -1) {
// Incrementing page counter to diplay next page
if(currentPageIndex < pagesCount - 1) {
++currentPageIndex;
}
else {
currentPageIndex = 0;
}
}
// PREVOUS PAGE
else if (gotoPage == -2) {
if (currentPageIndex == 0){
currentPageIndex = pagesCount - 1;
}
else if(currentPageIndex <= pagesCount - 1 ) {
--currentPageIndex;
}
else {
currentPageIndex = 0;
}
}
// GOTO PAGE
else {
currentPageIndex = gotoPage - 1 ;
}
// Check if the current page is same as the next page then do not do the animation
// else reset the 'isAnimatiing' flag
if (tempPageIndex != currentPageIndex) {
$pageWrapper.data('current', currentPageIndex);
// Next page to be animated.
var $nextPage = $pages.eq(currentPageIndex).addClass('pt-page-current');
$currentPage.addClass(outClass).on(animEndEventName, function() {
$currentPage.off(animEndEventName);
endCurrentPage = true;
if(endNextPage) {
onEndAnimation($pageWrapper, $nextPage, $currentPage);
}
});
$nextPage.addClass(inClass).on(animEndEventName, function() {
$nextPage.off(animEndEventName);
endNextPage = true;
if(endCurrentPage) {
onEndAnimation($pageWrapper, $nextPage, $currentPage);
}
});
}
else {
$pageWrapper.data('isAnimating', false);
}
}
else {
alert("Transition.js : Invalid 'data-goto' attribute configuration.");
}
// Check if the animation is supported by browser and reset the pages.
if(!support) {
onEndAnimation($currentPage, $nextPage);
}
}
Aucun commentaire:
Enregistrer un commentaire