0

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

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

4

1 に答える 1