这是参考“重新排序列表元素 - jQuery?”的问题。已经问过here
现在我想进一步前进。我想做什么,我只是想为电子商务建立一个比较产品项目。
所以,在这里我找到重新排序列表项。 但是我想在每个名为“Left”和“Right”的列表项中添加两个按钮,尽管这里我只显示了一个“Right”。单击“向右”按钮时,“数据排序”值将更新为+1,列表将向右移动,即在下一个位置,下一个定位列表项将重新排序到它的先前位置。简而言之,就是李物品的并排运动。
所以HTML如下:[只是添加了按钮]
<ul id="ulName">
<li data-sortby="1">three <a href="javascript:;" class="rGth" >Right</a></li>
<li data-sortby="2">one<a href="javascript:;" class="rGth" >Right</a> </li>
<li data-sortby="3">two<a href="javascript:;" class="rGth" >Right</a> </li>
<li data-sortby="4">four<a href="javascript:;" class="rGth" >Right</a> </li>
脚本是:
$(document).ready(function() {
var ul = $('ul#ulName'),
li = ul.children('li');
li.detach().sort(function(a,b) {
return $(a).data('sortby') - $(b).data('sortby');
});
ul.append(li);
$('.rGth').each(function(){
var thisli = $(this);
var parent = thisli.parent('li');
var right = parent.data('sortby') + 1;
var left = parent.data('sortby') - 1;
thisli.click(function(){
//alert(parent.data('sortby')+1);
alert(right);
alert(left);
parent.data('sortby', right);
parent.next().data('sortby',left);
});
});
});
但我发现“data-”属性没有更新。 任何人都可以帮我解决我的错误吗?
我编辑了我的代码。它提供了数据属性值的警报,但我看到它没有改变。我知道我在做一个愚蠢的混乱。有人可以帮忙吗? 这是Fiddle
答案 0 :(得分:0)
我终于改变了我的代码并取得了我正在寻找的结果。这是最终的代码:
$('.down').click(function(){
var cur = $(this).parent(),
next= $(this).parent().next();
if(next.length > 0 ) {
var moveDown = (cur.offset().left + cur.outerWidth()) - (next.offset().left + next.outerWidth()),
moveUp = (next.offset().left + next.outerWidth()) - (cur.offset().left + cur.outerWidth());
cur.css('position', 'relative');
cur.animate({'left':-moveDown});
next.css('position', 'relative');
next.animate({'left':-moveUp},function(){
cur.detach().insertAfter(next);
next.detach().insertBefore(cur);
cur.css({'position': 'static', 'top': 0});
next.css({'position': 'static', 'top': 0});
});
}
//cur.detach().insertAfter(next);
//next.detach().insertBefore(cur);
});
$('.up').click(function(){
var cur = $(this).parent(),
prev= $(this).parent().prev();
if(prev.length > 0) {
var moveUp = (cur.offset().left + cur.outerWidth()) - (prev.offset().left + prev.outerWidth()),
moveDown = (prev.offset().left + prev.outerWidth()) - (cur.offset().left + cur.outerWidth());
cur.css('position', 'relative');
cur.animate({'left':moveDown});
prev.css('position', 'relative');
prev.animate({'left':moveUp},function(){
cur.detach().insertBefore(prev);
prev.detach().insertAfter(cur);
cur.css({'position': 'relative', 'left': 0});
prev.css({'position': 'relative', 'left': 0});
});
}
});