- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想用 Tinysort 对此列表进行排序通过使用 LI
元素的第一个 TIME
元素。
<div class="box">
<ul>
<li><a href="#">John</a>
<div class="bubble">
<p><strong>John</strong></p>
<p>
<time datetime="01/01/1950">01/01/1950</time> -
<time datetime="10/02/2005">10/02/2005</time>
</p>
</div>
</li>
<li><a href="#">Alice</a>
<div class="bubble">
<p>Alice</p>
</div>
</li>
<li><a href="#">Mary</a>
<div class="bubble">
<p>Mary</p>
<p>
<time datetime="01/02/1920">01/02/1920</time> -
<time datetime="01/02/2015">01/02/2015</time>
</p>
</div>
</li>
</ul>
</div>
所以在我的例子中应该是:Mary - John - Alice(或者不太正确,但可以接受,可能是:Alice - Mary - John)。
我已经尝试过
tinysort('.box ul>li', {selector:'time',attr:'datetime'});
但它弄乱了我的列表,并且只对 bubble
div
进行排序,而不是 li
。此外,任何没有 time
的元素都会被忽略,因为它没有指向 li
。
或者,我可以在 li
元素内添加一个时间属性,但是 HTML 污染越少越好,因为这样的属性实际上并没有添加任何语义。有什么建议可以通过尽可能少的 HTML 修改来对列表进行排序吗?我可能想要的是让 tinysort 意识到我想要对 li
进行排序,而不是对 bubble
进行排序。
最佳答案
这里的问题是您尝试排序的属性不是数字,因此它像字符串一样处理。在时间元素或列表元素中添加 Unix 时间戳并对其进行排序。您可以在服务器端或客户端执行此操作。
这是一个 fiddle :https://jsfiddle.net/Sjeiti/o9kv8be2/这是代码(我很懒,将时间戳添加到列表元素中,但您可能应该将其添加到时间元素中):
var listElements = document.querySelectorAll('li');
for (var i = 0, l = listElements.length; i < l; i++) {
var li = listElements[i],
time = li.querySelector('time'),
date = time && new Date(time.getAttribute('datetime'));
date && li.setAttribute('data-timestamp', date.getTime());
}
document.querySelector('button').addEventListener('click', function() {
tinysort(listElements, {
data: 'timestamp'
});
});
关于javascript - 使用 Tinysort 按子属性对 HTML 列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35042456/
我在一个页面上有多个 html 表,每个表都有一个标题行。当我单击该列标题时,它应该按该列对所有表进行排序。我特别提到的列包含一个 anchor ,用于文本显示整数值。 当我单击列标题时,我遇到了错误
我正在使用 TinySort 制作排行榜/高分,当我只有正确排序的数字时,它工作得很好。但是当然,我需要在每个乐谱前加上一个名字,所以当我这样做时,它会按字母顺序对它进行排序,因为有字符。 注意:我正
我正在考虑使用 tinysort对复杂的 div 列表进行排序这是首先尝试 html S5 S5-2 S5-1
我无法让 TinySort 将缺少属性的元素放在已排序元素下方。 “place”和“emptyEnd”等选项根本不会改变顺序。 请看一下: https://jsfiddle.net/dm8cz4ra/
我正在尝试将所有 使用 TinySort 将项目移至列表顶部: Name 1 Name 2 Name 3 Name 4 Name 5 我需要覆盖用 PHP
鉴于此观点: " %> Office Order Summary Office Order Summary " name="OfficeId"
Tinysort documentation表示区分大小写的排序可以配置为: tinysort.default.cases = true; 我已将该配置 JavaScript 添加到我的网页中,位于带
我目前正在使用 tinysort.js 插件,我想根据数组对一些 div 进行排序。我不确定如何使用 tinysort 解决这个问题。 这是我目前拥有的: html: banana
我想用 Tinysort 对此列表进行排序通过使用 LI 元素的第一个 TIME 元素。 John John
这是 live site我在胡闹。 每张图片上的数字是通过 get_field() 使用 php 调用的。 (我正在使用插件“高级自定义字段”创建一个字段,在创建帖子时我在其中输入一个数字,在这种情况
我有以下结构的一系列列表项。我正在尝试使用 Tinysort 对有序列表 class="collection-grid editable ui-sortable"的列表项进行排序。排序的标准是下面双星
我是一名优秀的程序员,十分优秀!