2012-05-01 256 views
3

我想創建一個按鈕,它將運行先前運行的函數。即我點擊buttonA來運行功能A然後點擊按鈕B來運行功能B我想有一個按鈕,允許用戶通過點擊後退按鈕返回到functionA。Jquery後退按鈕。

我想我可以一個全局變量來保存先前的語句,但它不會工作,因爲每個函數將運行會覆蓋存儲的語句。這裏是一些psuodo代碼樣的解釋我的意思

var globalvar; 
globalvar = functionA; 
function B { run globalvar}; 
+0

類似:如何檢測瀏覽器後退按鈕事件 - 跨瀏覽器](http://stackoverflow.com/q/25806608/55075)在SO – kenorb

回答

12

使用哈希超鏈接和hashchange事件。在jQuery的:

$(window).on('hashchange',function() { 
    var hash = location.hash.substring(1); // strip the leading # symbol 
    // now run code based on whatever the value of 'hash' is 
}); 

HTML:

<a href="#hash1">function A</a> 
<a href="#hash2">function B</a> 

現在,每當用戶點擊瀏覽器的「後退」按鈕(或HTML按鈕觸發history.go(-1)),它會回到什麼哈希以前選中並再次觸發hashchange事件。

http://jsfiddle.net/mblase75/hL5FZ/

警告:舊的瀏覽器IE7一樣或may not support hashchangehistory.go()

+0

[可能在這個問題中找到已有的歷史插件](http://stackoverflow.com/questions/116446/what-is-the-best-back-button-jquery-plugin)。 – kapa

+1

@bažmegakapa是的,儘管如果不需要舊的瀏覽器支持,那些插件可能是矯枉過正的。我可能會使用[Modernizr](http://modernizr.com/)獲得支持,並針對這些罕見的情況進行解決。 – Blazemonger

+0

當然,只是認爲值得添加它作爲評論。有時你只是不想重新發明輪子:)。 Upvoted btw。 – kapa

3

JQuery的方法,並應用類回鏈接,如:

$(document).ready(function(){ 
    $('a.back').click(function(){ 
    parent.history.back(); 
    return false; 
    }); 
});