3
要以編程方式設置URL散列(#)(與手動更改URL對比)時,要防止反饋循環,我想暫時禁用hashChange偵聽器。以編程方式更新散列時禁用hashchange偵聽器(jQuery BBQ)
如何更改此代碼以在使用$.bbq.pushState(hash)更新散列時實際禁用散列表變化事件? (下面的代碼不工作)
hashChangeEnabled : true,
bindHashChange : function(){
var that = this;
$(window).bind('hashchange', function(event) {
if(that.hashChangeEnabled == true){
stateObj = event.getState()
that.stateChangedHandler(stateObj);
}
});
},
updateURL : function(hash){
this.hashChangeEnabled = false; // <--- Look here
$.bbq.pushState(hash);
this.hashChangeEnabled = true;
},
問題是,BBQ並不檢查新狀態是否真的不同。所以,如果我推入相同的狀態,hashChangeEnabled將被設置爲「false」,而不會重置爲「true」,因爲您在hashchange偵聽器中執行該操作時永遠不會觸發。謝謝! – dani 2011-06-09 14:51:25
修改了我的答案 – dioslaska 2011-06-10 09:41:59