将按钮链接到另一页面的一部分

时间:2016-05-05 11:50:54

标签: javascript jquery html

我有一个链接按钮转到另一个页面,它可以工作,但我希望链接转到该页面的特定部分。我知道我应该使用jquery,因为某些原因它没有跳到我希望它跳转到的部分。

我的按钮链接:

 <div class="btn_holder top-slide"><a 
  href="http://testurl.com/media#isabelo"><p class="leeu_button">READ
  MORE</p></a>
 </div>

我目前已经滚动到页面底部而不是id =&#34; isabelo&#34;的部分。所以这个jquery有效,但它不是我想要的。希望你明白。

$(document).ready(function(){ 

//check if hash tag exists in the URL
if(window.location.hash) {          
    $("html, body").animate({ scrollTop: $(document).height() }, 1000);
    1000);      
}     });

我也已经尝试了这个(根本不用):

$(document).ready(function(){ 

//check if hash tag exists in the URL
if(window.location.hash) {          
     $('html, body').animate({ scrollTop: $("#isabelo").offset().top }, 1000);      
}
     });

我尝试链接的网页有一个id为id =&#34; isabelo&#34;

<div class="content_holder terms_row" id="isabelo">

5 个答案:

答案 0 :(得分:2)

<a href="http://www.example.com/some-page-or-other.html#exactline">Click here</a>

您要跳转到的位置应具有name="exactline"属性

答案 1 :(得分:2)

我的解决方案:

$(document).ready(function(){    
//check if hash tag exists in the URL
if(window.location.hash) {   
setTimeout(function(){
     $('html, body').animate({ scrollTop: $("#isabelo").offset().top },
 1000); 
 },1000);       
  }      
}); 

稍后使用超时功能加载它。解决了:))

答案 2 :(得分:1)

你不应该为此而需要jquery。您应该能够链接到&#34; media / pagename.html#isabelo&#34;用直接的HTML。但是你错过了页面名称。那,你需要在那里有一个NAME标签以及ID。

答案 3 :(得分:1)

好吧,我在同一页面尝试了它并且它有效。我不是jquery的专家,但如果:

 $("html, body").animate({ scrollTop: $(document).height() }, 1000);

isabelo 没有,可能是因为浏览器还没有加载 isabelo 所在的html。尝试调试以查看您是否在该点上有 isabelo 元素,或者它仍未加载。

我发现的其他不同之处在于,在第一个示例中,您将两次“1000”

$(“html,body”)。animate({scrollTop:$(document).height()}, 1000);     的 1000);

在第二个

$('html,body')。animate({scrollTop:$(“#isabelo”)。offset()。top}, 1000);

但我认为这是一个复制/粘贴的错误,因为在第一个例子中我没有找到它的感觉,但它的工作正如你所说。

答案 4 :(得分:0)

setInterval比setTimeout更好。如果您的页面在1秒内没有加载,那么setTimeout中的代码将无法按预期工作。但是,如果每秒都有一个间隔,并且一旦获得该元素就清除间隔,这将始终有效。

$(document).ready(function(){    
//check if hash tag exists in the URL
if(window.location.hash) {   
a = setInterval(function(){
     if($("#isabelo").length) {
       $('html, body').animate({ scrollTop: $("#isabelo").offset().top },
       1000);
       clearInterval(a);
     } 
 },1000);       
  }      
});