2012-09-30 36 views
1

我使用jQuery UI選項卡頁面上的選項卡之間進行切換時是:保持URL變量在<a href="http://www.code7dev4.co.uk/data" rel="nofollow">http://www.code7dev4.co.uk/data</a></p> <p>相關的jQuery代碼切換標籤

jQuery(document).ready(function ($) { 
    function activateTab($tab) { 
     var $activeTab = $tab.closest('dl').find('a.active'), 
      contentLocation = $tab.attr("href") + 'Tab'; 

     // Strip off the current url that IE adds 
     contentLocation = contentLocation.replace(/^.+#/, '#'); 

     //Make Tab Active 
     $activeTab.removeClass('active'); 
     $tab.addClass('active'); 

     //Show Tab Content 
     $(contentLocation).closest('.tabs-content').children('li').hide(); 
     $(contentLocation).css('display', 'block'); 
    } 

    $('dl.tabs dd a').live('click', function (event) { 
     activateTab($(this)); 
    }); 

    if (window.location.hash) { 
     activateTab($('a[href="' + window.location.hash + '"]')); 
     $.foundation.customForms.appendCustomMarkup(); 
    } 
}); 

現在,客戶需要的形式有權爲每個數據搜索創建獨特的URL,並且這些URL在URL中作爲參數(例如,http://www.code7dev4.co.uk/data?form_send=send&country=Uganda&sector=health&strail=plac&units=DollarConstant&year=2009)。

切換標籤丟失了url變量,我剩下/data#table

如何更改代碼以保持這些url參數?

回答

0

您使用設置基準網址如下:

<base href="http://www.code7dev4.co.uk/data"> 

,因爲它加載的http://www.code7dev4.co.uk/data#id而不只是附加到當前URL(包括查詢字符串),這是擺脫片段標識符。這意味着查詢字符串正在被刪除,更重要的是重新加載頁面(這違背了非重新加載標籤切換的整個目的)。

刪除基本標籤可以解決問題,但我不確定其他地方會產生什麼影響。所以下面

更新

是我能找到的唯一解決方案「解決」這個問題你正在處理wtih。這是一個很好的練習,因爲我建議不要使用這種技術 - 它不雅觀,除了Chrome v23以外沒有經過測試。實際上,我們通過在錨點上的click事件期間重寫href屬性(這將對應於您的頁面上的選項卡)來停用base元素。然後,我們在mouseup事件之後20毫秒重置原始的href。我們必須建立延遲,因爲mouseup事件在之前觸發的點擊事件。

var anchor = document.querySelector("a"), 
    baseElement = document.querySelector("base"), 
    baseHref = baseElement.getAttribute("href"); 

    anchor.addEventListener("click", function (event) { 
     baseElement.setAttribute("href", ""); 
    }, true); 

    anchor.addEventListener("mouseup", function (event) { 
     setTimeout(function() { 
      document.querySelector("base").setAttribute("href", baseHref); 
     }, 20); 
    }, true); 

最好的辦法是根本不使用base標籤,但如果你沒有在HTML輸出控制,這也可能只是節省了一天在緊要關頭。我真的很想看看是否有其他人提出了更好的(即更優雅的)解決方案。

+0

謝謝馬特。我假設這個基本URL被用於Joomla功能的一部分。而不是刪除這可能會導致其他網頁上的問題,你可以建議更改上面的js代碼以獲取帶有參數的完整url並使用它而不是基礎url?我知道有js中可以使用的document.URL,但我無法確定需要設置的位置。基本上覆蓋正在追加的網址。這是一個選項嗎? JS不是我的力量,所以你的建議是值得讚賞的。 –

+0

根據您的反饋,添加了對原始答案的更新。 – Matt

相關問題