KnockoutJS不操作DOM這種方式。你可以使用jQuery或原生js document.createElement('用戶詳細信息等),並將其追加到用戶div之間。在淘汰賽中最接近這種行爲的是IF
綁定。最後解釋。它仍然需要在那裏定義,然後淘汰賽可以控制它。
對於淘汰賽的方式,你可以能見度開始:
<div>user 1</div>
<div data-bind="visible: selectedUser() == user1">User 1 Details etc</div>
<div>user 2</div>
<div data-bind="visible: selectedUser() == user2">User 2 Details etc</div>
<div>user 3</div>
<div data-bind="visible: selectedUser() == user3">User 3 Details etc</div>
或者更好,在循環:
<!-- ko foreach: users -->
<div data-bind="text: $data.userName"></div>
<div data-bind="visible: $parent.selectedUser() == $data.userName, text: $data.userDetails"></div>
<!-- /ko -->
如果你想保持這些div了DOM的,改變visibility
到if
。從淘汰賽網站:
如果對可見的綁定起着類似的作用。差異是 ,在可見的情況下,包含的標記始終保留在DOM中,並且 始終應用其數據綁定屬性 - 可見綁定僅使用CSS切換容器元素的可見性。但是,if綁定在物理上添加或刪除DOM中的包含標記, 並且僅在表達式爲true時纔將綁定應用於後代。
你可以閱讀更多的文檔:http://knockoutjs.com/documentation/if-binding.html
編輯:和你修改的jsfiddle:http://jsfiddle.net/XwcK9/1/