javascript - Html,更改表中的列顺序

标签 javascript jquery html knockout.js

我正在使用 knockout.js 库来绑定(bind)数据。
让我有下一个例子
JSFiddle Example

我有包含数据的表格。表有列顺序 -

姓名 - 姓氏 - 中间名 - 年龄
我有 4 个功能

var namePosition = function()

var lastnamePosition = function()

var middlenamePosition = function()

var agePosition = function()  

我想将表中列的顺序绑定(bind)到此函数返回的值。
例如
namePosition 返回 4
lastnamePosition 返回 2
middlenamePosition 返回 1
agePosition 返回 3
然后表应该有下一列顺序 -
Middlename - LastName - Age - Name.
你有什么想法,我该怎么做? (使用 knockoutjquery)

最佳答案

Diodeus 所说的是一个很好的方法。您可以使用这些函数生成订单数组:

var order = [];
order[namePosition()] = "name";
order[lastnamePosition()] = "last";
order[middlenamePosition()] = "middle";
order[agePosition()] = "age";

// order===["middle", "last", "age", "name"]

然后将 order observableArray 属性设置为您的对象,使用上述创建时的顺序作为初始值。

最后一件事是将单元格顺序和文本绑定(bind)到新值:

<table>
   <thead>  
     <tr data-bind="foreach:order">
       <td data-bind="text:$root.headers[$data]"></td>
    </tr>
 </thead>
  <tbody data-bind="foreach:users">   
    <tr data-bind="foreach:$root.order">
        <td><span data-bind="text:$parent[$data]"></span></td>
    </tr>
  </tbody>
</table>

Info about $root and $parent .

使用当前方法,您可以通过如下代码动态更改列顺序:

model.order(["name", "last", "age", "middle"])

此处示例:http://jsfiddle.net/Klaster_1/Pw2VE/1/

关于javascript - Html,更改表中的列顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12822741/

相关文章:

javascript - 如何在 Angularjs 中使用 ng-file 上传库上传二进制格式的文件?

javascript - 在 View 中使用 C# MVC 多个动态模型

HTML CSS : Make Google Icon into Button without Rectangle around it

javascript - Jquery 与 Javascript : getting css style object shows different result

javascript - 制作脚本书签

javascript - 进行自动实时聊天/假聊天,我的 JavaScript 跳过第一个响应

javascript - 改变不透明度会破坏图像的定位

javascript - 下载pdf.js中base64生成的pdf

javascript - 显示不同的 div 并在显示 div 时添加类

javascript - Angular 缩小构建后如何修复注入(inject)器错误?