使用if / else语句的jQuery函数(滚动到锚点)不起作用

时间:2018-01-23 17:22:16

标签: javascript jquery scroll

所以我真的很想Javascript / jQuery尝试自学,现在我不明白为什么有些东西不起作用。

基本上我的网站上有一个菜单,当点击一个链接时,我希望它向下滚动到一个锚点。哪个效果很好。

但是现在我还想要以下内容:当窗口宽度小于360px时,我希望滚动停止在锚点上方80px。

现在这很好用:

jQuery(function() {

 jQuery('.moduletable_resmenu a').click(function(){ 
     jQuery('html,body').animate({
        scrollTop: jQuery(jQuery(this).attr('href')).offset().top
     }, 1000);
     return false;
  });
});

还有这个:

jQuery(function() {

 jQuery('.moduletable_resmenu a').click(function(){ 
     jQuery('html,body').animate({
        scrollTop: jQuery(jQuery(this).attr('href')).offset().top-80
     }, 1000);
     return false;
  });
});

但是当我尝试将这些组合并包含if / else语句时,它不起作用:

jQuery(function() {

 jQuery('.moduletable_resmenu a').click(function(){ 
  if ($(window).width() < 360){  
     jQuery('html,body').animate({
        scrollTop: jQuery(jQuery(this).attr('href')).offset().top-80
     }, 1000);
     return false;
  } 
  else {
     jQuery('html,body').animate({
        scrollTop: jQuery(jQuery(this).attr('href')).offset().top
     }, 1000);
     return false;
  }
 });
});

我可能只是没有足够的理解Javascript / jquery,有人可以帮助我并告诉我我需要做什么才能使这个工作?

非常感谢

1 个答案:

答案 0 :(得分:0)

我在检查控制台后想出来了,错误显示:“TypeError:$不是函数” - 显然这是一个Joomla特定的东西,默认情况下如果你在Joomla中排队jQuery“jQuery”被用来代替“ $“ - 我将代码更改为

jQuery(function() {

 jQuery('.moduletable_resmenu a').click(function(){ 
// $ to jQuery 
  if (jQuery(window).width() < 360){  
     jQuery('html,body').animate({
        scrollTop: jQuery(jQuery(this).attr('href')).offset().top-80
     }, 1000);
     return false;
  } 
  else {
     jQuery('html,body').animate({
        scrollTop: jQuery(jQuery(this).attr('href')).offset().top
     }, 1000);
     return false;
  }
 });
});

现在它有效!