Jquery 使用getElementById时,knockout.js applyBindings会损坏现有绑定

Jquery 使用getElementById时,knockout.js applyBindings会损坏现有绑定,jquery,knockout.js,append,Jquery,Knockout.js,Append,我首先使用applyBindings()将我的模型应用于文档: ko.applyBindings(appViewModel); 然后添加一些动态内容: $('#contentSection').append(myAccountTmpl); 然后,我使用applyBindings将模型应用于新内容。如果使用getElementById引用动态添加的节点,则文档上的绑定已损坏。如果我使用JQuery风格的引用,我没有问题: ko.applyBindings(appViewModel,docu

我首先使用applyBindings()将我的模型应用于文档:

ko.applyBindings(appViewModel);
然后添加一些动态内容:

$('#contentSection').append(myAccountTmpl);
然后,我使用applyBindings将模型应用于新内容。如果使用getElementById引用动态添加的节点,则文档上的绑定已损坏。如果我使用JQuery风格的引用,我没有问题:

  ko.applyBindings(appViewModel,document.getElementById('#myAccountForm'));  //corrupts other bindings
  ko.applyBindings(appViewModel,$('#myAccountForm')[0]);  //No Problems!
如果有人能对这种行为提出解释,我们将不胜感激。我不熟悉这些技术,也没有任何线索。我甚至不能解释我所说的“损坏”是什么意思,除了某些绑定无法显示内容(我确实验证了数据仍然在绑定模型属性中)


此外,这可能有助于其他人对其绑定进行莫名其妙的“损坏”。

如果使用
document.getElementById
请不要在其前面加上哈希。带有哈希的表单是选择器语法
getElementById
需要id名称,因此对于您的版本,它将返回null。正确的形式是:

ko.applyBindings(appViewModel,document.getElementById('myAccountForm'));