Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 平滑滚动防止我离开页面_Javascript_Jquery - Fatal编程技术网

Javascript 平滑滚动防止我离开页面

Javascript 平滑滚动防止我离开页面,javascript,jquery,Javascript,Jquery,我是Jquery新手,所以现在我尝试使用已经生成的代码并理解它。 我使用了一个平滑的滚动代码,但是如果我不删除,它会阻止我离开页面 event.preventDefault(); 但是,如果我删除它,它会变为空白三分之一秒,因为它会转到锚点,然后执行滚动 代码如下: $(document).ready(function(){ $("a").on('click', function(event) { if (this.hash !== ""){ //here is my problem I

我是Jquery新手,所以现在我尝试使用已经生成的代码并理解它。 我使用了一个平滑的滚动代码,但是如果我不删除,它会阻止我离开页面

event.preventDefault();
但是,如果我删除它,它会变为空白三分之一秒,因为它会转到锚点,然后执行滚动

代码如下:

$(document).ready(function(){
 $("a").on('click', function(event) {
 if (this.hash !== ""){ //here is my problem I think
  //Prevent default anchor click behavior
  event.preventDefault(); //here is what makes me unable to leave page
  var hash = this.hash;
  $('html, body').animate({
   scrollTop: $(hash).offset().top
  }, 800, function(){
   window.location.hash = hash;
  });
  } // End if
 });
});
我想做的是:

if(this.hash !== "" && this.split('#')[0] != location.split('#')[0])
但是代码就是不执行,我尝试了其他几种方法,但是一旦我尝试操作“this”,即使我把它放在另一个变量中,然后再操作这个变量,它也不会工作

那么,如何使用“event.preventDefault()”访问其他页面呢


谢谢

您可以将if语句更改为此

if (this.hash !== "" && this.href.split('#')[0] != location.href.split('#')[0])

这应该行。

谢谢!它不起作用,但这是因为其他原因,但是它起作用了,让我用这种方式操作字符串。如果有人想知道它为什么不起作用,您实际上想要
event.preventDefault()当它相等时,请更换
=
==
一起使用,可用于离开页面