2013-03-07 89 views
0

我需要關於jQuery函數的幫助,該函數允許我使用井號標籤滾動到.load()頁面上的錨點。jQuery .load頁面隨後使用標籤導航到錨點

基本上有人點擊一個主頁鏈接,它打開了一個模型窗口,他們用它來瀏覽網站的其餘部分。該窗口然後使用相同的代碼來打開站點上的任何其他鏈接。我知道這些鏈接的格式不是最優的,但這是我需要處理的。

我有以下代碼顯示在模型窗口中。

<div id="pop-top-menu"> 
    <p class="p_text"> 
    <a href="javascript:pop('properties.php#<?php echo strip_tags($_GET['property']); ?>');">Go Back</a> | 
    <a href="javascript:pop('properties.php');">View by Resorts</a> | 
    <a href="javascript:pop('private-homes.php');">View our Private Homes</a> | 
    <a href="javascript:pop('rental-coupons.php');">View our Properties with Discount Coupons</a></p> 
</div> 

當用戶點擊這些鏈接之一,將會進入雖然這樣的代碼:

function pop(id) { 
     $("#body-cover").fadeIn(1000); 
     $("#slide-content").load(id).slideDown(1000); 
     $("#slide-content-close").delay(2000).fadeIn(1000); 
    } 

所以我需要有properties.php#訪問者點擊PROPERTY_ID並將其加載頁面properties.php然後導航到錨標記。並不是所有的鏈接都會有錨,但很多都會。

請注意,這不是基於錨點的導航。這是加載一個鏈接,然後導航到提供的錨(如果存在)。

回答

2

未經檢驗的,但是當我理解正確你的問題,你可以修改你的流行功能是這樣的:

function pop(id) { 
    // Expression to test if id has a hashtag 
    var hasHash = /(#([^ ]*)/, 
     $hashID; 
    $("#body-cover").fadeIn(1000); 
    $("#slide-content").load(id).slideDown(1000); 
    $("#slide-content-close").delay(2000).fadeIn(1000); 
    if(hasHash.test(id)!== false) { 
     // hasfound - grep it, and make a jQuery Object 
     $hashID = $('#' + id.split('#')[1]); 
     if($hashID.length) { 
      // if it is found, scroll to this element with an animation 
      // in case you just want a jump, simply set scrollTop 
      // and remove the animate method 
      $('html, body').animate({ 
       scrollTop: $hashID.offset().top 
      }, 2000); 
     } 
    } 
} 
+0

對不起已故的答覆,但這個偉大的工程! – frustratedtech 2013-03-26 20:10:06