在用户使用jQuery .scroll / .scrollTop函数向下滚动一定数量的像素后,我有一个JQuery脚本来加载新闻稿订阅弹出窗口。
此刻它全部封装在
中jQuery(document).ready(function($)
问题是通常的缓存和图像问题,并且整个地方都会弹出订阅框。我正在阅读使用.load函数延迟jQuery,直到页面完全加载。但是,当我更换
jQuery(document).ready
带
jQuery(window).load(function($){
//your code here
});
功能完全破坏。
我想要注意我正在使用WordPress并让脚本排队如下:
function enfold_child_custom_scripts(){
// Register and Enqueue a Script
// get_stylesheet_directory_uri will look up child theme location
wp_register_script( 'custom-js', get_stylesheet_directory_uri() . '/custom.js', array('jquery'));
wp_enqueue_script( 'custom-js' );
}
add_action('wp_enqueue_scripts', 'enfold_child_custom_scripts');
这是我现在的JS / jQuery代码。
jQuery(document).ready(function($) {
jQuery("#nl-pop").hide(); //hide nl block initially
var disableFade = "false";
var startShowTop = jQuery("#newsletter-cta").offset().top - 3500;
var startHide = jQuery("#newsletter-cta").offset().top - jQuery(window).height(); //Hide when the viewport is reached
jQuery('#no-thanks').click(function(event) {
event.preventDefault();
jQuery('#nl-pop').fadeOut('slow');
disableFade = "true";
});
jQuery(window).scroll(function() {
if(jQuery(window).scrollTop() < (startShowTop) ) //when scrollposition is smaller than the first point
{
jQuery("#nl-pop").fadeOut(200); // Hide when in the upper part of the page
}
else //when reached the lower part of the page
{
if(jQuery(window).scrollTop() > startShowTop && $(window).scrollTop() < startHide && disableFade==="false") { //When reached the show position but not as far down as the hide position
jQuery("#nl-pop").fadeIn(200); //show
}
else if(jQuery(window).scrollTop() > (startHide) ) { //scrolled down to the bottom newsletter box
jQuery("#nl-pop").fadeOut(200); //hide
}
}
});
});
答案 0 :(得分:0)
将startShowTop
和startHide
的计算移至.scroll()
内。这样他们的价值就不会受到卸载元素的影响。相反,它们将取决于页面的当前状态(很可能是在整个页面加载后)。