2014-02-20 37 views
2

下面的代碼只是舉例,我想用window.location.hash因此,如果有人打開一個網站,這樣,使用window.location.hash更改元素的背景顏色

http://fiddle.jshell.net/2uPEs/3#row=green|red 

他們得到#green行點擊觸發和#box顏色應該是紅色的,

現在我必須在URL中顯示background-color,例如它是靜態的,但在實際情況下,它將是動態的。

HTML

<div id="a" class="a-class"> 
    <table id="maTable" class="ma-table"> 
     <tr class="row"> 
      <td><div id="green">green</div></td> 
     </tr> 
     <tr class="row"> 
      <td><div id="blue">blue</div></td> 
     </tr> 
    </table> 
</div> 
<div id="b" class="b-class"> 
    <div id="box" class="box">Box</div> 
</div> 

CSS

.a-class{ width:300px; height:200px; background-color:gray; float:left;} 
.b-class{ width:300px; height:200px; float:right;} 
.row { background-color: #ccc; float: left; margin: 10px 0; padding: 1em; width: 50%; } 
.box{ width:50%; height:50%; border-style:solid;} 

JS

$(document).ready(function() { 

    $("#green").click(function() { 
     $("#box").css("background-color","red"); 
    }); 

    $("#blue").click(function() { 
     $("#box").css("background-color","yellow"); 
    }); 
}); 

這裏是Fiddle Demo

+0

是否有任何理由使用#而不是?row = –

+0

?row =會在運行時調用新的URL負載。沒有理由,如果它全部由客戶處理。 –

+0

你可以使用':target'選擇器。它也在jQuery中實現(https://api.jquery.com/target-selector/)。 –

回答

3

嘗試這樣:

演示:從寡婦http://jsfiddle.net/qsDn5/46/

獲取URL和操縱它來獲得requred值。

$(document).ready(function() { 
var url = window.location.pathname; 
//var url = "http://fiddle.jshell.net/2uPEs/3#row=green|red"; 
var sUrl = url.split("#")[1]; 
var arr = sUrl.split("|"); 
var bdColor = arr[1]; 
var rowColor = arr[0].split("row="); 
alert("box color: "+ bdColor+ " row color" + rowColor); 


}); 
+0

Awlad,謝謝,但這不是我要找的:(我想要的是,當我點擊綠色,它應該改變網址,然後使用location.hash添加東西,當有人去與網址它實現了 – Mathematics

2

我要的是,當我點擊​​,應該改變URL

您需要綁定的元素的點擊處理程序(在下面defElm變量)改變window.location.hash

當有人去用哈希代碼網址,它實現了他們

所以,你可以處理程序綁定到window.onhashchange事件,分裂哈希字符串得到變量和變化背景顏色爲#box

在這裏你去:

$(document).ready(function() { 
    var defElm = [ 
    { 
     'element': 'green', 
     'color': 'red' 
    }, 
    { 
     'element': 'blue', 
     'color': 'yellow' 
    } 
    ]; 

    $.each(defElm, function(i, v){ 
    $("#" + v.element).click(function() { 
     window.location.hash = "#row="+ v.element + "|" + v.color; 
    }); 
    }); 

    $(window).bind('hashchange', function() { 
    var _hash = window.location.hash.trim().split('|'), 
     elm = _hash[0].substr(5) || false; 
     clr = _hash[1]   || ''; 

    if (elm) { 
     $("#" + elm).click(function() { 
     $("#box").css("background-color", clr); 
     }).click(); // trigger the click handler 
    } 
    }); 

}); 

WORKING DEMO

注:你可能需要下載演示到您的計算機,以檢查效果(打開你的瀏覽器下載的文件)。

+0

+1,謝謝不允許下載任何東西,所以不能測試 – Mathematics

+0

@CustomizedName只需點擊頂部菜單欄的Bins項,然後點擊* Download *。 –