首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.top jQuery问题与空.top

.top jQuery问题与空.top
EN

Stack Overflow用户
提问于 2014-01-10 16:44:33
回答 1查看 47关注 0票数 1

为下列代码在.top中获取ie9中的未定义或空错误:

代码语言:javascript
复制
jQuery('#menu').menu();
jQuery('#menu').find('a').click(function(e){
    if(jQuery(window).width() < 767) {
        jQuery('#menu').toggleClass('show');
    }
    var $go_to = jQuery(this).attr('href');
    var param = $go_to.split('#')[1];
    var $go_to_url = $go_to.split('#')[0];
    var $current_url = window.location.href.split('#')[0];      
    var scroll_distance = jQuery('#'+param).offset().top;
    function cleanURL(url) {
            if(url.match(/http:\/\//))
            {
                url = url.substring(7);
            }
            if(url.match(/^www\./))
            {
                url = url.substring(4);
            }

            return url;
    }
    $go_to = cleanURL($go_to_url);
    $current_url = cleanURL($current_url);
    if(jQuery(this).closest('#menu').hasClass('render')) {
        if(param) {
            e.preventDefault();

            if(jQuery('#'+param).length > 0) {

                if(jQuery(window).width() > 767){
                    if(jQuery('.header').hasClass('sticky')){
                        scroll_distance = scroll_distance - jQuery('.header').outerHeight(); 
                    } else {
                        scroll_distance = scroll_distance; 
                    }
                }

                if($go_to == $current_url) { 

                    jQuery('html, body, document').stop().animate({scrollTop: scroll_distance }, 1000, 'easeOutQuart', function(){
                        window.location.hash = param;
                        jQuery('html, body, document').stop().animate({scrollTop: scroll_distance }, 0);
                    });
                }
                else {
                    window.location = $go_to_url+'#'+param;
                }
            } else {
                window.location = $go_to_url+'#'+param;
            }
        } else {
            window.location = $go_to_url;
        }
    }
});

请帮帮我!基本上,菜单应该能够点击到“一页”网站上的适当部分。但是也有单独的博客文章的子页面。在这些单一的博客文章页面上,当单击菜单项时,会引发错误。我认为,这与子页面上没有一个param (也不是空白param)有关,而是一个子页面url。THoughts?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-10 16:59:32

我建议把这句话改为:

var scroll_distance = jQuery('#'+param).offset().top;

就像这样:

var scroll_distance = jQuery('#'+param).length ? jQuery('#'+param).offset().top : 0;

如果jQuery('#'+param)不返回对象,那么.offset()是未定义的。

这样,您就可以测试是否定义了scroll_distance,并且只在以下情况下尝试其他操作:

代码语言:javascript
复制
if (scroll_distance) {  
  //your logic goes here
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21049794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档