2012-09-04 71 views
0

Possible Duplicate:
window.location = #anchor doesn't work in IEIE中不支持JQuery window.location.hash?

我有一个选择框,当点击更改了我的基于AJAX的页面的URL的哈希值。我有一个函数,定期检查window.location.hash的更改,然后相应地更新内容。以下代码是在选择更改时更改URL的功能。它适用于Firefox,但我无法在IE中使用它!我不断收到的对象不支持此属性或方法错误:

#ob是我的选择

$("#ob").change(function() { 
    ob = $(this).val(); 
    window.location.hash = "#ob=" + ob; 
}); 

有什么建议?谢谢!

+0

你使用哪个IE版本? IE7或更低版​​本不支持onhashchange事件。 – sajawikio

回答

1

问题不是散列,错误发生在行之前。
声明变量使用var关键字:

$("#ob").change(function() { 
    var ob = $(this).val(); 
    window.location.hash = "#ob=" + ob; 
}); 

读到这里的解释:jQuery selector does not work in IE7/8

+0

虽然良好的做法,这不会解决问题。 – josh3736

+0

是的,它会;) –

+0

允许我改述:这*不应该*解决问题。我知道IE将每个元素的ID都添加为全局属性,但从我记忆中,覆盖这些并不是问题。 [我做了一些测试](http://jsfiddle.net/josh3736/zNhwK/),奇怪的是,只是分配给全局'ob'确实会抛出。但是,如果你首先覆盖'window.ob',那么这工作正常。 – josh3736

1

而不是滚动您自己的状态管理,我只是去同一个战斗考验的库来处理一切为你。我最喜欢的是jQuery BBQ

$("#ob").change(function() { 
    var ob = $(this).val(); 
    $.bbq.pushState({ ob:ob }); 
}); 

作为额外的奖励,在现代浏览器onhashchange事件,而不是轮询更改到location.hash烧烤挂钩。