簡體   English   中英

如何通過jquery實現“跳轉”?

[英]How can I achieve “jumps” with jquery?

我正在開發一個網站,該網站根據用戶單擊的菜單圖標加載不同的頁面。 我和一個朋友寫了這個javascript函數:

function loadPage(targetURL){
    $.get( targetURL, function( data ) {
    document.getElementById("placeholder").innerHTML=data;
    window.scrollTo(0,0);
    });
}

菜單圖標的編碼如下:

<img src="images/some_icon.png" title="Some Page" onclick="javascript:loadPage('pages/somePage.php')"/>

它非常有用,除非嘗試跳轉到特定的div ID。 例如,

<img src="images/some_icon.png" title="Some Page" onclick="javascript:loadPage('pages/somePage#someLocationOnPage.php')"/>

取出.scrollTo(0,0)不能解決問題。 我放入該行以確保在更改頁面時頁面一直向上滾動(否則,如果您位於頁面中間,並單擊菜單圖標,則新頁面將顯示在頁面中間)。

我錯過了什么? 如何獲取鏈接以跳轉到div ID?

這兩個網址沒有不同。 帶有書簽的代碼只會獲得相同的HTML代碼。 由於您沒有告訴瀏覽器轉到特定的書簽,因此它應該顯示相同的信息。 (當然,除非您的服務器為該鏈接發送了不同的信息)

我想您必須手動將視圖移動到所需的書簽。

function loadPage(targetURL, targetID){
    $.get( targetURL, function( data ) {
        document.getElementById("placeholder").innerHTML=data;
        if(targetID && $("#"+targetID).length != 0){
            $(document).scrollTop($("#"+targetID).offset().top);
        } 
        else {
            window.scrollTo(0,0);
        }
    });
}

然后將目標的ID作為另一個參數。 如果不可能,您也可以在網址中搜索#並找到ID /或錨點。

首先,您應該在代碼中保留window.scrollTo(0,0) ,以使頁面在每次單擊菜單項時都位於頂部。

其次,如果點擊正在調用的菜單圖標

 loadPage('pages/somePage#someLocationOnPage.php')

您的意圖是打開'somePage'並滾動到元素ID為'someLocationOnPage.php'的位置,然后應更新loadPage方法以檢查'#'之后的部分。

function loadPage(targetURL){
    $.get( targetURL, function( data ) {
      document.getElementById("placeholder").innerHTML=data;
      window.scrollTo(0,0);

      // Grab url part after '#'
      var name = targetURL.substr( href.indexOf('#') + 1 ), target = $('a[name='+ name +']'), target2 = $('#' + name);

      // Determine of bookmark is available or not
      target = (target.length)? target : target2;

      // Scroll to the bookmark
       $('html,body').animate({
          scrollTop: target.offset().top
       },400);
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM