在我看来,在 IE7/IE8 中使用时,Knockout 中似乎存在错误,但这可能是一个已知问题,或者(更有可能)我处理错误并需要更正。我将不胜感激您出色的人们可以提供的任何帮助。
当我使用 jQuery 的 $.click() 将单击处理程序绑定到元素时,如下所示,它通常在 IE7/IE8/IE9 中运行良好。我遇到问题的地方是元素(在这种情况下是一个按钮,但它也适用于我的测试中的其他元素类型)是否位于由 Knockout 绑定的 DOM 结构内。遗憾的是,这只发生在 IE7/IE8 中,所以我在底部分享的 jsFiddle 链接可能价值有限。在 IE9(不出所料)中,行为按预期工作。
这似乎也不会影响没有 jQuery 绑定的事件(在纯 javascript 中使用 element.attachEvent)。
<div data-bind="with:ContainerObject">
<div data-bind="text:ContainedProperty"></div>
<input id="alertButtonJQBad" type="button" value="jq/ko=broken" />
</div>
function jqClickBad() { alert("nested click() handler bound by jquery"); }
// this fires fine in IE9, but not in IE7/IE8:
$("#alertButtonJQBad").click(jqClickBad);
var viewModel = {
ContainerObject: {
ContainedProperty: "test"
}
};
ko.applyBindings(viewModel);