【发布时间】:2017-05-12 21:17:51
【问题描述】:
我有这个代码。如果你看数据,id就是div的id。 接下来是悬停字段,每个字段都有一个数字值。
以下代码将在每次悬停 div 时增加悬停次数。
var counter = [
{id: 1, hovers: 1},
{id: 2, hovers: 0},
{id: 3, hovers: 8},
{id: 4, hovers: 5},
{id: 5, hovers: 3},
{id: 6, hovers: 4},
{id: 7, hovers: 2},
{id: 8, hovers: 9},
{id: 9, hovers: 2}
]
$('div').mouseover(function() {
var obj = counter.find(e => e.id == $(this).attr('id'))
if(obj) obj.hovers++
console.log(obj)
})
这里是被悬停和计数器的 html div。
<div id="1"><p>Box 1</p></div>
<div id="2"><p>Box 2</p></div>
<div id="3"><p>Box 3</p></div>
<div id="4"><p>Box 4</p></div>
<div id="5"><p>Box 5</p></div>
<div id="6"><p>Box 6</p></div>
<div id="7"><p>Box 7</p></div>
<div id="8"><p>Box 8</p></div>
<div id="9"><p>Box 9</p></div>
如果我们查看计数器数据。
如何移动 div 以使悬停次数最多的 div 排在最前面,然后按顺序与其他 div 一起移动?
【问题讨论】:
-
所以你希望它在每次悬停时重新排序?
-
不,那太多了。也许在单击按钮时重新排序?
-
您可以考虑使用 flexbox 进行重新排序:
flex-direction: <axis>-reverse,例如flex-direction: column-reverse并将每个 div 的order属性设置为检测到的悬停事件数。
标签: javascript jquery ecmascript-6