我有一个 20 项的清单。我正在使用 jquery 拖放来允许用户对项目列表进行排序。我希望列表中的前 10 个项目保持相同的颜色,比如说黄色,因为这些项目已重新排列。例如,如果将#19 的项目拖到前十名内,则#10 的项目将被推到#11,而应该为黄色的项目将是#的 1,2,3,4,5,19 ,6,7,8,9。
无论哪个顺序,前十名都应该保持黄色。其余的只是黑色
我不知道该怎么做。有人可以指出我正确的方向吗?
提前致谢!
您可以在删除元素时添加回调函数并将前十项的背景设置为黄色。有关放置事件的详细信息,请参阅下面的链接 http://api.jqueryui.com/draggable/#event-stop 回调事件看起来像
// pseudo code
function() {
all_items.each(e, i) {
if(i<10) set_bg(yelow, e);
else set_bg(black, e);
}
}
看到这个,我试了一下,它只会放一个警告框,试着在这里做上面的逻辑
<script>
$( "#draggable" ).draggable({
stop: function() {
// your code goes here
alert('stop event')
}
});
</script>
您没有告诉我们您的 html,所以我不得不猜测您使用的是 html 列表。排序停止时,您必须获取元素的位置并决定分配哪种颜色
http://api.jqueryui.com/sortable/#event-stop
和使用index
方法
工作示例:http: //jsfiddle.net/txm9y/
$( "#sortable" )
.sortable({
stop: function(event, ui){
$(this).trigger("markTopTen");
}
})
.disableSelection()
.bind("markTopTen", function() {
$(this).find("li")
.removeClass("topTen")
.each(function(index){
if(index < 10)
$(this).addClass("topTen");
});
})
.trigger("markTopTen");
开始排序。前十名将保持黄色,而其他人则为黑色。