在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);
答案 0 :(得分:1)
我甚至无法在IE8中运行JS小提琴。 jsFiddle似乎没有正确显示给我。
一般来说,如果你使用常规的jQuery事件绑定而不是KO事件绑定,那么你就是在反对谷歌。如果你真的需要使用jQuery注册你的处理程序而不是Knockout事件绑定,那么在 ko.applyBindings
之后注册或使用实时事件处理程序(通过向{{1}提供css选择器) })这样你的绑定就可以在Knockout执行的任何潜在的DOM重写中存活下来。