2011-07-10 103 views
1

我使用jquery.address,這是一個插件,用於在有Ajax重網站時執行瀏覽器歷史記錄狀態。 雖然,在某些情況下,鏈接會觸發$ .address.change()函數,但應該阻止它。我如何在某些情況下阻止jquery.address更改網址

例如,當有導航時,其中1個元素是當前頁面, 我寧願不重新加載當前頁面,而是阻止發生更改事件。

在$ .address.change()函數中,我當然可以檢查這是否是當前頁面,只是返回,但我仍然可以在瀏覽器地址欄中看到更改。

這比重新加載頁面更加錯誤,因爲現在它顯示當前頁面的網址錯誤給用戶。

所以如果有人有一個想法如何阻止jquery.address改變網址,例如,當鏈接上有類'當前'嗎?

問候 桑德Houttekier

回答

1

我會用鏈接的點擊處理與跟蹤變量的狀態沿着m_pagem_currentFoo等,然後把if語句檢查,如果該鏈接改變之前對應於當前狀態地址。

下面是從他們的API頁面第一個代碼示例:

$.address.change(function(event) { 
    // do something depending on the event.value property, e.g. 
    // $('#content').load(event.value + '.xml'); 
}); 
$('a').click(function() { 
    $.address.value($(this).attr('href')); 
}); 

和這裏的一些修改:

//This is called when the address is changed due to navigation. 
$.address.change(function(event) { 
    // do something depending on the event.value property, e.g. 
    // $('#content').load(event.value + '.xml'); 
}); 

//This is your click handler 
$('a').click(function() { 
    //Do any logic for choosing what happens with the address here. 
    if(moon = newMoon) { 
     $.address.value($(this).attr('href')); 
    } 
}); 
+0

,但我有過地址的變更沒有權力...... jquery.address插件這樣做。我可以阻止它在那裏做任何事情,但它確實已經改變了地址欄中的網址。 點擊事件會比較困難,我可以但不知道這會是什麼性能,如果我必須遍歷頁面中的所有錨點,檢查它們是否是當前狀態並綁定它的點擊以防止它進一步發展。 – Sander

+0

@Sander查看最新的答案。這是否解釋得更好? :) –

+0

aha ok是的,我現在做的,問題是,我調用地址上的很多元素在一起,而不是每次點擊手動... 很多內容加載了ajax,我經常更新所有元素 新加載像這樣$('a.ajax',container).address(); (多一點pparameters,但這只是爲了給主意) 我可能需要將其更改爲個人設置,然後我相信... – Sander

相關問題