使用jQuery 1.9解决2.2.0错误
我复制了一个knockoutjs的例子:
JS Bin Participants
Here are the participants: Credits:
function MyViewModel() { this.buyer = { name: 'Franklin', credits: 250 }; this.seller = { name: 'Mario', credits: 5800 }; } ko.applyBindings(new MyViewModel());
当我将jQuery更新到版本1.9时 ,我遇到以下错误:
Uncaught TypeError: Object function (e,t){return new st.fn.init(e,t,X)} has no method 'clean'
如果有人能解释这个bug是在jQuery还是KO,我会很感激。
原因
您没有使用最新版本的Knockout。 以前的版本2.2.0与jQuery 1.9.x和on不兼容。 看到这个Knockout开发线程 :
Knockout 2.2.0使用的是jQuery.clean(),它已被弃用,在1.9中不存在。
这意味着Knockout 2.2.0正在调用未定义的jQuery方法,从而触发您指定的JS错误。
解决方案
- 考虑更新到与jQuery 1.9兼容的最新版Knockout
- 如果你不能,请使用jQuery Migrate插件 ,它为jQuery 1.9增加了向后兼容性
- 如果所有其他方法都失败了,您将需要恢复到jQuery 1.8
将Knockout更新为2.2.1可以解决我的问题:
- 2.2.0 : http : //jsfiddle.net/UDSBC/2/
- 2.2.1 : http : //jsfiddle.net/UDSBC/1/
所以只需改变:
至:
它会起作用。