我对 Javascript 和 jQuery 有点陌生,但我会尝试解释我的问题。我制作了一个简单的页面,其中包含一个文本字段(电影名称)和一个下拉菜单(将移动评分 1-5)。当用户单击“添加电影”按钮时,这些值将被放入一个数组中,该数组被推送到另一个数组,因此该数组如下所示[[grade, "moviename"]]
:然后我动态创建:<li> "moviename" <span> "grade" </span> </li>
并且movienamne 和grade 在页面上显示为列表元素。这工作正常,但现在我想要两个按钮,按最高和最低等级对 li 元素列表进行排序......
[
[
5,
”movie name1”
],
[
3,
”movie name2”
],
[
1,
”movie name3”
],
[
2,
”movie name4”
]
]
如果列表如下所示,例如,如果您按最低排序,我希望列表显示为:
[
[
1,
”movie name3”
],
[
2,
”movie name4”
],
[
3,
”movie name2”
],
[
5,
”movie name1”
]
]
我试图创建一个函数,对数组进行排序,然后删除当前的 li 元素,然后打印出新列表,但所有值都进入一个列表元素。如何获取数组的单独值,然后将每个值打印为列表元素?或者,如果可以直接对列表进行排序而不删除它?我想要做的是按列表元素内的 span 元素中显示的数字对列表进行排序。有人知道如何做到这一点吗?
var button_high = $('#high');
var button_low = $('#low');
var betyg_array = new Array();
button_high.click(function()
{
$("#filmerna ul li").remove();
betyg_array.sort(function(a,b){return b-a});
var film = betyg_array;
var grade = betyg_array;
var element = '<li class="lista">' + film + '<span class="betyg">'+ grade +'</span></li>';
film_list.append(element);
但这当然会导致整个数组进入一个列表元素,我希望将特定值分配给特定列表元素,并使其按跨度元素中的数字排序...
var button_high = $('#high');
var button_low = $('#low');
var betyg_array = new Array();
button_high.click(function() {
$list = $("#filmerna ul");
$("#filmerna ul li").remove();
betyg_array.sort(function(x,y){return y[1]-x[1]});
$.each(betyg_array, function() {
$nyFilm = $("<li />");
$nyFilm.attr("class", "lista")
$nyFilm.text($(this)[0]);
$nyBetyg = $("<span />");
$nyBetyg.attr("class", "betyg");
$nyBetyg.text($(this)[1]);
$nyBetyg.appendTo($nyFilm);
$nyFilm.appendTo($list);
});
});