DOM changes and delay the

2 replies · opened Sep 18, 2017

OozosoftSep 18, 2017

I do many changes in document - DOM - using javascript as for example:
In travel demo I add all elements (top-bar, header, slider, fslider, travel-slider-overlay, tabs, page-menu and content) after page is loaded using javascript

How I can delay the page transition and other init functions until I add all items, I suspect following code:


	var $window = $(window),
		$body = $('body'),
		$wrapper = $('#wrapper'),
		$header = $('#header'),
		$headerWrap = $('#header-wrap'),
		$content = $('#content'),
		$footer = $('#footer'),
		windowWidth = $window.width(),
		oldHeaderClasses = $header.attr('class'),
		oldHeaderWrapClasses = $headerWrap.attr('class'),
		stickyMenuClasses = $header.attr('data-sticky-class'),
		responsiveMenuClasses = $header.attr('data-responsive-class'),
		defaultLogo = $('#logo').find('.standard-logo'),
		defaultLogoWidth = defaultLogo.find('img').outerWidth(),
		retinaLogo = $('#logo').find('.retina-logo'),
		defaultLogoImg = defaultLogo.find('img').attr('src'),
		retinaLogoImg = retinaLogo.find('img').attr('src'),
		defaultDarkLogo = defaultLogo.attr('data-dark-logo'),
		retinaDarkLogo = retinaLogo.attr('data-dark-logo'),
		defaultStickyLogo = defaultLogo.attr('data-sticky-logo'),
		retinaStickyLogo = retinaLogo.attr('data-sticky-logo'),
		defaultMobileLogo = defaultLogo.attr('data-mobile-logo'),
		retinaMobileLogo = retinaLogo.attr('data-mobile-logo'),
		$pagemenu = $('#page-menu'),
		$onePageMenuEl = $('.one-page-menu'),
		onePageGlobalOffset = 0,
		$portfolio = $('.portfolio'),
		$shop = $('.shop'),
		$gridContainer = $('.grid-container'),
		$slider = $('#slider'),
		$sliderParallaxEl = $('.slider-parallax'),
		swiperSlider = '',
		$pageTitle = $('#page-title'),
		$portfolioItems = $('.portfolio-ajax').find('.portfolio-item'),
		$portfolioDetails = $('#portfolio-ajax-wrap'),
		$portfolioDetailsContainer = $('#portfolio-ajax-container'),
		$portfolioAjaxLoader = $('#portfolio-ajax-loader'),
		$portfolioFilter = $('.portfolio-filter,.custom-filter'),
		prevPostPortId = '',
		$topSearch = $('#top-search'),
		$topCart = $('#top-cart'),
		$verticalMiddleEl = $('.vertical-middle'),
		$topSocialEl = $('#top-social').find('li'),
		$siStickyEl = $('.si-sticky'),
		$dotsMenuEl = $('.dots-menu'),
		$goToTopEl = $('#gotoTop'),
		$fullScreenEl = $('.full-screen'),
		$commonHeightEl = $('.common-height'),
		$testimonialsGridEl = $('.testimonials-grid'),
		$pageSectionEl = $('.page-section'),
		$owlCarouselEl = $('.owl-carousel'),
		$parallaxEl = $('.parallax'),
		$parallaxPageTitleEl = $('.page-title-parallax'),
		$parallaxPortfolioEl = $('.portfolio-parallax').find('.portfolio-image'),
		$textRotaterEl = $('.text-rotater'),
		$cookieNotification = $('#cookie-notification');

	$(document).ready( SEMICOLON.documentOnReady.init );
	$window.on( 'load', SEMICOLON.documentOnLoad.init );
	$window.on( 'resize', SEMICOLON.documentOnResize.init );

Kindly advice.

Also I do add/remove/change of those items using js how to recall the init functions again for example if I remove tob-bar, header, slider and add new ones how init the variables again.

Also is it possible to fade-out and replay the transition between changes.

OozosoftSep 20, 2017

Any feedback on the subject ?

SSemicolon WebSTAFFSep 24, 2017

Hello,

Thanks for your Patience!

Consider running the following JS code after adding your Elements:

var $window = $(window),
	$body = $('body'),
	$wrapper = $('#wrapper'),
	$header = $('#header'),
	$headerWrap = $('#header-wrap'),
	$content = $('#content'),
	$footer = $('#footer'),
	windowWidth = $window.width(),
	oldHeaderClasses = $header.attr('class'),
	oldHeaderWrapClasses = $headerWrap.attr('class'),
	stickyMenuClasses = $header.attr('data-sticky-class'),
	responsiveMenuClasses = $header.attr('data-responsive-class'),
	defaultLogo = $('#logo').find('.standard-logo'),
	defaultLogoWidth = defaultLogo.find('img').outerWidth(),
	retinaLogo = $('#logo').find('.retina-logo'),
	defaultLogoImg = defaultLogo.find('img').attr('src'),
	retinaLogoImg = retinaLogo.find('img').attr('src'),
	defaultDarkLogo = defaultLogo.attr('data-dark-logo'),
	retinaDarkLogo = retinaLogo.attr('data-dark-logo'),
	defaultStickyLogo = defaultLogo.attr('data-sticky-logo'),
	retinaStickyLogo = retinaLogo.attr('data-sticky-logo'),
	defaultMobileLogo = defaultLogo.attr('data-mobile-logo'),
	retinaMobileLogo = retinaLogo.attr('data-mobile-logo'),
	$pagemenu = $('#page-menu'),
	$onePageMenuEl = $('.one-page-menu'),
	onePageGlobalOffset = 0,
	$portfolio = $('.portfolio'),
	$shop = $('.shop'),
	$gridContainer = $('.grid-container'),
	$slider = $('#slider'),
	$sliderParallaxEl = $('.slider-parallax'),
	swiperSlider = '',
	$pageTitle = $('#page-title'),
	$portfolioItems = $('.portfolio-ajax').find('.portfolio-item'),
	$portfolioDetails = $('#portfolio-ajax-wrap'),
	$portfolioDetailsContainer = $('#portfolio-ajax-container'),
	$portfolioAjaxLoader = $('#portfolio-ajax-loader'),
	$portfolioFilter = $('.portfolio-filter,.custom-filter'),
	prevPostPortId = '',
	$topSearch = $('#top-search'),
	$topCart = $('#top-cart'),
	$verticalMiddleEl = $('.vertical-middle'),
	$topSocialEl = $('#top-social').find('li'),
	$siStickyEl = $('.si-sticky'),
	$dotsMenuEl = $('.dots-menu'),
	$goToTopEl = $('#gotoTop'),
	$fullScreenEl = $('.full-screen'),
	$commonHeightEl = $('.common-height'),
	$testimonialsGridEl = $('.testimonials-grid'),
	$pageSectionEl = $('.page-section'),
	$owlCarouselEl = $('.owl-carousel'),
	$parallaxEl = $('.parallax'),
	$parallaxPageTitleEl = $('.page-title-parallax'),
	$parallaxPortfolioEl = $('.portfolio-parallax').find('.portfolio-image'),
	$textRotaterEl = $('.text-rotater'),
	$cookieNotification = $('#cookie-notification');

SEMICOLON.documentOnReady.init();
SEMICOLON.documentOnLoad.init();
SEMICOLON.documentOnResize.init();

This should work fine in most cases. Hope this Helps!

Let us know if we can help you with anything else or if you find any further issues.

Have the same question, or something new?

Sign in to the Canvas dashboard to reply or open your own topic. Canvas owners get direct help from the SemiColonWeb team.

Reply on the dashboard