设置tr标记的行顺序
Setting the row order of tr tags
想知道tr
标记是否有一个属性可以设置,以确定它将在中的网页上呈现的顺序
我有一段代码可以基于数组动态创建一个表,在这个数组中,还有一段数据可以说明每行的顺序,但数据是任意输入的。
举个例子:
<table>
<tr row="0">A</tr>
<tr row="2">C</tr>
<tr row="1">B</tr>
<table>
该表在dom结构中的结构是这样的,但当渲染时,我希望它显示为这样:
<table>
<tr row="0">A</tr>
<tr row="1">B</tr>
<tr row="2">C</tr>
<table>
如果这个row
属性或类似的东西不存在,我能用JavaScript做吗?
我有一个基于数组动态创建表的代码
在构建表之前,应该按照所需的顺序对数组进行排序。
例如,要按名为"索引"的属性进行排序:
myArray.sort(function(a, b) {
return +(a.index > b.index);
})
如果您的源数据很复杂,您可以定义一个单独的函数,该函数返回最终用于对表进行排序的属性:
function getSortKey(element) {
// write the logic to return your "row" attribute. It can be
// as complex as necessary (but it must be synchronous).
// a made-up example:
return element.members ?
? element.members[0].name
: element.defaultName ;
}
myArray.sort(function(a, b) {
return +(getSortKey(a) > getSortKey(b));
})
没有内置的方法可以更改行的渲染顺序,并且在渲染后使用JavaScript更改顺序效率很低。
在将表解析到DOM之前,您可能应该从更高的级别修复这一问题,但沿着这些路线进行的操作可能会奏效(请注意,现在没有时间调试它)
var table_tr = [];
jQuery("#mytable").find("tr").each(function(){
table_tr[parseInt(jQuery(this).attr("row"))] = jQuery(this).clone(true,true);
jQuery(this).remove();
});
jQuery.each(table_tr,function(index,element){
jQuery("#mytable").append(element);
});
编辑:有点难看,但它有效:https://jsfiddle.net/ezbd9huv/不过说真的,在它打印到DOM~
相关文章:
- ajax请求的顺序总是不同的
- 按照选项卡索引的顺序循环一个jQuery选择
- 匹配一个单词,其中候选人可以跨越顺序组(跨度)
- 按顺序添加和删除类
- 按我自己的类克隆另一个元素的内容和顺序
- Javascript-根据赋值顺序,按键合并对象数组
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- querySelector/getElementByClassName嵌套项的顺序
- Jquery - table.row(tr) is undefined
- 用Javascript添加带有#text的tr元素
- 以不同的顺序输出数据
- 使用Javascript,如何显示<tr>在另一<tr>悬停时,隐藏第二个<tr>
- 重新排列HTML元素的顺序并更改内容
- 在Javascript中列出顺序子集元素
- 是否“;对于的“;循环迭代遵循JavaScript中的数组顺序
- Mongodb$in以与数组中相同的顺序获取结果
- 如何使用phonegap从安卓设备中提取联系人的字母顺序
- 在表单OnChange中交换数字顺序
- 获取作为jQuery对象的tr元素的正确顺序
- 设置tr标记的行顺序