2016-05-05 100 views
2

我有一個鏈接按鈕轉到另一個頁面,它可以工作,但我希望鏈接轉到該頁面的一個特定部分。我知道我應該爲此使用jquery,由於某種原因,它不跳轉到我希望它跳到的部分。將一個按鈕鏈接到另一個頁面的一部分

我的按鈕鏈接:

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

我目前有srolls到頁面底部,而不是部分其中id =「isabelo」。所以這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 = 「isabelo」

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

is'id =「isabelo」'unique? – BenG

+0

關於jquery ... 看這裏http://stackoverflow.com/questions/9652944/jquery-scroll-to-id-from-different-page –

回答

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);  
    }  
}); 

使用的超時funtion加載它後位。解決:)

1
一個div

你不應該爲此需要jquery。您應該能夠通過直接的HTML鏈接到「media/pagename.html#isabelo」。但是你錯過了頁面名稱。那個,你需要在那裏有一個NAME標籤和ID。

+0

感謝您的回答,我已經嘗試過,它不起作用,我認爲只有當您嘗試從同一頁面鏈接到該頁面上的另一個部分時纔有效。 – Ylama

+1

否。它也可以在彈跳到不同的頁面時使用。您必須確保當時有一個。沒有那個命名的定位標記,它將不起作用。 – durbnpoisn

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

要跳轉到該位置應該有name="exactline"財產

+0

謝謝,我不知道你是否明白,因爲那sulnce可以在同一頁面上鍊接到另一個頁面上的鏈接,就像我在'page1'上有一個鏈接,我希望它到達id =「isabelo on'page2'的某個部分」。希望這使得它更清晰一點? – Ylama

+0

@Ylama它將適用於任何頁面不只是相同的頁面,你甚至嘗試過他的解決方案? –

+0

它應該適用於任何頁面內的任何部分,無論其本地或某個網站。 ..不只是在同一頁 –

1

嗯,我試過在同一個頁面,它的工作。我不是在jQuery的專家,但如果:

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

的作品,但與isabelo不,也許是因爲瀏覽器仍沒有加載HTML哪裏isabelo是。嘗試進行調試,看看您是否具有該點上的那個元素,或者它尚未加載。

我發現其他不同的是,在第一個例子,你把兩次 「1000」

$( 「HTML,身體」),動畫({scrollTop的:$(文件).height()}, 1000); 1000);

在第二

$( 'HTML,身體')動畫({scrollTop的:$( 「#isabelo」)偏移()頂部},1000)。

但我認爲這是一個錯誤的複製/粘貼,因爲在第一個例子中,我沒有找到它的感覺,但它的工作原理就像你說的。

+0

啊,我喜歡這個答案,我沒有想到會加載。讓我檢查老兄!射擊 – Ylama

+0

它在'$(document).ready(function(){'。 – BenG

+0

我看不到所有頁面。也許這個元素是在函數加載後創建的。這只是一個選擇:/ –

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);  
    }  
}); 
+1

很酷,謝謝你的解決方案。肯定會做一些研究並實施它。 – Ylama

相關問題