I have a list and would like to move the item to the top when it's clicked on. Simultaneously, all other items should move down to make space.
That's what I have so far:
<ul id="list">
<li id="one">item-1</li>
<li id="two">item-2</li>
<li id="three">item-3</li>
<li id="four">item-4</li>
</ul>
//
$('li').on('click', function () {
$(this).css({ position : 'absolute', top : $(this).position().top });
var height = $(this).parent().children().first().height();
var list = $(this).parent();
$(this).animate({top: '0px'}, { duration: 500, queue: false });
list.children().each(function( index, element) {
var $liElement = $(element);
if($liElement != $(this))
{
$liElement.animate({top: height + 'px'}, { duration: 500, queue: false });
}
});
});
Here is the link: http://jsfiddle.net/5qgnjvdp/
我看到物品在顶部移动但其他所有物品都没有移动。这有什么不对?
动画完成后,我应该使用prepend()
将列表项插入到顶部吗?
答案 0 :(得分:3)
虽然不是真正的“动画片”,但我前段时间沿着类似的路线做过一些事情。我最终使用的是一个slideUp
,然后是一个slideDown
来给动画感,而没有与移动相关的实际动画。
$('li').click(function() {
$(this).slideToggle(500, function() {
$(this).prependTo('#list').slideToggle(500); });
});
li { list-style: none; background: #ddd;padding: 5px 10px; border: 1px solid #aaa; margin: 10px; text-transform: uppercase; font-weight: bold;color:#fff; }
#list { margin:20px; padding:0; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<ul id="list" data-role="listview">
<li id="one">item-1</li>
<li id="two">item-2</li>
<li id="three">item-3</li>
<li id="four">item-4</li>
</ul>
$('li').click(function() {
$(this).slideToggle(500, function() {
$(this).prependTo('#list').slideToggle(500); });
});
同样,我意识到这不是幻灯片切换之外的动画,但它传达了一种类似于动画的交互感。
答案 1 :(得分:0)
您的脚本存在一些问题。
$liElement != $(this)
时,this
引用当前列表子项的每个函数的范围,element
与li
相同。将单击的$(...)
存储在循环函数之外的变量中并与之进行比较。也无需比较element != clickedLi
个对象。 li
就足够了。position: absolute
元素设置动画时,它们没有li
(或相对),因此您将看不到它们的移动。li
元素分配绝对位置,则将所有元素移动到相同位置,即列表中的第二行。您可以使用相对位置来移动它们。您应该确保在点击top
的原始位置后排除之后的元素。动画完成后,您应该将列表项作为列表的第一个子项插入,然后删除绝对/相对定位,包括Only a type can be imported. com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl resolves to a package
样式,以确保它第二次运行(并确保可见表示与元素的结构一致。