[英]Single page with multiple states controlled by URL
嘗試搜索此內容,但是很難找到適合我所要查找的術語。
基本上,我希望能夠基於URL顯示特定的頁面狀態(顯示/隱藏div)。
我有一個包含3個div的頁面,並且有一組針對相關div的單選按鈕,在其容器中添加了show / hide類,還修改了地址欄中的URL以匹配當前視圖。
例:
但是,存在的唯一文件是/account/orders/index.php
。
我對這些按鈕的標記如下:
<div class="sidebar__group">
<div class="tab__group is--vertical" data-target="#ordersContent">
<label class="tab" value="history">
<input type="radio" name="ordersTabs">
<span><a class="link">Order History</a></span>
</label>
<label class="tab" value="recurring">
<input type="radio" name="ordersTabs">
<span><a class="link">Recurring Orders</a></span>
</label>
<label class="tab" value="feedback">
<input type="radio" name="ordersTabs">
<span><a class="link">Rate Vendors</a></span>
</label>
</div>
</div>
.tab__group
的data-target屬性是容器div,該容器div根據每個無線電輸入的值獲取正確的顯示/隱藏div。 該值是附加到URL的內容。
這是控制它的jQuery:
$('.tab').on('click', function(e){
var targetState = $(this).attr('value');
if (!$(this).children('input').is(':checked')){
var states = $(this).parents('.tab__group').find('.tab').map(function(){
return $(this).attr('value');
}), string = [];
$.each(states, function(index, value){
var state = value;
string.push(state);
});
var classes = string.join(' '),
groupTarget = $(this).closest('.tab__group').data('target');
$(groupTarget).removeClass(classes);
$(groupTarget).addClass(targetState);
e.preventDefault();
$(this).children('input').prop("checked", true);
// Add the appropriate state to the current url
window.history.pushState("string", "Title", targetState);
}
});
奇怪的是,當我在本地運行時,一切正常。 但是在實時服務器上運行時,出現“未找到”錯誤。 我猜這是因為上面的URL實際上沒有任何內容。 有沒有一種方法可以強迫它進入index.php主頁?
因此解決方案是使用mod_rewrite。 這是一個htaccess
文件示例:
RewriteEngine On
RewriteCond %{REQUEST_URI} path/
RewriteRule ^path/to/state$ path/to/ [L]
^path/to/state$
是將被重寫的URL path/to/
是被重寫的URL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.