我正在创建一个使用jquery使用滚动效果的wordpress主题。
一切都很有效,直到您使用散列网址进入页面。
例如:
http://www.domain.com/#contact
它将转到页面底部。
这只发生在firefox而不是任何其他浏览器......甚至IE工作:D
反正。
正如我所说,一切都是100%有效,直到你从另一页进来。
如果我删除了滚动的javascript,那么它会转到相关的div.id但是当我添加代码时它会停止工作。
此情况也只发生在页面底部附近的目的地。
我已尝试在页脚中加载代码而不是标题,因为它在从wordpress创建div之前读取了jquery,但这并不好。它不起作用。
这是我创建的jquery。
jQuery(function(){
/***************************************************
VERTICAL SCROLLING
***************************************************/
jQuery('a#ublblogback').click(function(){ parent.history.back(); return false;});
jQuery('#main a, a.internal, a.da-link, #menu_nav a, .footer_inner a, #footerinternal').click(function(e){
if (!jQuery(this).hasClass("thisisabloglink")) {
e.preventDefault();
}
jQuery('div#main ul li:last-child').find('a').css('background','none');
var $anchor = jQuery(this);
var $section = jQuery($anchor.attr('href'));
var topOffset = $section.offset().top;
// Adjust extra offset if not primary section
if(!$section.parent('#wrapper').length){
topOffset = topOffset - 0;
}
// Scroll page
jQuery('html, body').stop().animate({
scrollTop: topOffset
}, 1500, 'easeInOutExpo');
});
/***************************************************
SCROLLING
***************************************************/
jQuery(window).scroll(function(){
var scrollOffset = jQuery(this).scrollTop();
if(scrollOffset <= 125){
jQuery('#logo').stop().animate({top: -scrollOffset}, 700);
jQuery('#main').stop().animate({top: -scrollOffset + 155}, 50);
}else{
jQuery('#logo').stop().animate({top: -225}, 50);
jQuery('#main').stop().animate({top: 0}, 50);
}
});
})(jQuery);
答案 0 :(得分:0)
您是否有指向您网页的链接? - 可能是在初始站点访问时加载了这个,当你更改页面时,内容是通过ajax加载的,所以当你在页面加载时运行函数时,你在jquery中引用的dom元素就不存在了。 p>
一种可能的解决方案可能是替换你的.click - 这一行:
jQuery('#main a, a.internal, a.da-link, #menu_nav a, .footer_inner a, #footerinternal').click(function(e){
与.on这样:
jQuery('body').on('click', '#main a, a.internal, a.da-link, #menu_nav a, .footer_inner a, #footerinternal', function(e){
这将使代码运行,即使在最初运行jquery时文档正文中不存在这些元素。
我没有花很多时间使用wordpress,所以这在黑暗中有点刺痛