为下列代码在.top中获取ie9中的未定义或空错误:
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?
发布于 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,并且只在以下情况下尝试其他操作:
if (scroll_distance) {
//your logic goes here
}https://stackoverflow.com/questions/21049794
复制相似问题