淘汰嵌套绑定会干扰IE7 / IE8中的jquery点击

它看起来好像在IE7 / IE8中使用Knockout时有一个错误,但它可能是一个已知问题或(甚至更可能)我正在接近错误的东西,需要纠正。 我很感激你们精彩的帮助。

当我使用jQuery的$ .click()将单击处理程序绑定到元素时,如下所示,它通常在IE7 / IE8 / IE9中正常工作。 我遇到问题的地方是元素(在这种情况下是一个按钮,但它也适用于我的测试中的其他元素类型)是在由Knockout绑定的DOM结构内部。 这只发生在IE7 / IE8中,遗憾的是,我在底部共享的jsFiddle链接可能价值有限。 在IE9中(不出所料),行为按预期工作。

这似乎也没有影响没有jQuery绑定的事件(在纯javascript中使用element.attachEvent)。

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);

http://jsfiddle.net/csiefken/WckWb/3/

我甚至无法在IE8中运行JS小提琴。 jsFiddle似乎不适合我。

一般来说,如果你使用常规的jQuery事件绑定而不是KO事件绑定,那么你就是在反对。 如果你真的需要使用jQuery来注册你的处理程序而不是Knockout事件绑定,那么要么 ko.applyBindings 之后进行注册要么使用实时事件处理程序(通过向$.on()提供css选择器),这样你的绑定就可以存活了由Knockout执行的潜在DOM重写。