2017-03-05 35 views
0

我是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()”访问其他页面?

谢谢

回答

0

可以更改if语句来此...

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

这应该工作。

+0

谢谢!它不起作用,但那是因为别的东西,但它确实让我以这种方式操作字符串。 –

+0

对于任何想知道为什么它不起作用的人,当它相等时,你实际上想'event.preventDefault();因此用'=='替换'!=',它适用于离开页面 –