javascript通过li属性循环并更改每个项的值
我想循环一组javascript通过li属性循环并更改每个项的值,javascript,jquery,list,Javascript,Jquery,List,我想循环一组元素,更新其中的值,并在文档中显示 我之所以这样做是因为我想按顺序对元素列表进行排序。我在JQuery中使用Sortable来实现这一点 <li> 1 </li> <li> 2 </li> <li> 3 </li> <li> 4 </li> <li> 5 </li> 1 二, 三, 四, 五, 该命令可成为: <li> 3 </li&g
元素,更新其中的值,并在文档中显示
我之所以这样做是因为我想按顺序对元素列表进行排序。我在JQuery中使用Sortable来实现这一点
<li> 1 </li>
<li> 2 </li>
<li> 3 </li>
<li> 4 </li>
<li> 5 </li>
1
二,
三,
四,
五,
该命令可成为:
<li> 3 </li>
<li> 1 </li>
<li> 4 </li>
<li> 2 </li>
<li> 5 </li>
3
一,
四,
二,
五,
然后单击一个按钮,我希望我的JS函数将li项的值更改回1,2,3,4,5。值得一提的是,我并不是在寻找一个解决方案,以恢复到以前的列表
谢谢。这应该可以(从jQuery 1.4开始):
这应该是可行的(从jQuery 1.4开始):
我想你宁愿重新排列列表项,而不是它们的内容。这样,您就不会丢失任何
li
的属性/类/。。。您可以保持DOM元素的完整性,只需更改一些ul
子元素的顺序
我发现了一个很好的小片段DoDoIt:
你唯一需要做的就是记住最初的顺序
function mysortA( a, b ) {
var compA = $(a).text().toUpperCase();
var compB = $(b).text().toUpperCase();
return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
}
function mysortB( a, b ) {
return a.originalindex < b.originalindex ? -1
: a.originalindex > b.originalindex ? 1
: 0;
}
然后您可以按一种方式进行排序:
// sort them using your sort function
listitems.sort( mysort )
// rebuild the list container
listitems.each( function(idx, itm) { mylist.append(itm); });
然后进行排序:
var ul=$('ul');
ul.children('li').get().sort(mysortB).each(function(i,li){ ul.append(li); });
注意:未经测试-抓住这个想法。我认为您更愿意对列表项进行重新排序,而不是对其内容进行排序。这样,您就不会丢失任何
li
的属性/类/。。。您可以保持DOM元素的完整性,只需更改一些ul
子元素的顺序
我发现了一个很好的小片段DoDoIt:
你唯一需要做的就是记住最初的顺序
function mysortA( a, b ) {
var compA = $(a).text().toUpperCase();
var compB = $(b).text().toUpperCase();
return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
}
function mysortB( a, b ) {
return a.originalindex < b.originalindex ? -1
: a.originalindex > b.originalindex ? 1
: 0;
}
然后您可以按一种方式进行排序:
// sort them using your sort function
listitems.sort( mysort )
// rebuild the list container
listitems.each( function(idx, itm) { mylist.append(itm); });
然后进行排序:
var ul=$('ul');
ul.children('li').get().sort(mysortB).each(function(i,li){ ul.append(li); });
注意:未经测试-抓住想法。是顺序1、2、3、4。。。总是吗?在这种情况下,您可以遍历项目(每个方法)并相应地设置它们的索引。无需担心旧值,只需重写。:)是的,这就是我试图做的,循环通过并覆盖我所期望的。最好的方法是什么?我猜是$elems.each(函数(索引){this.html(索引)});我会成功的。我的jQuery fu在atm中的状态有点糟糕,但希望您可以基于此导出解决方案。:)是序列1,2,3,4。。。总是吗?在这种情况下,您可以遍历项目(每个方法)并相应地设置它们的索引。无需担心旧值,只需重写。:)是的,这就是我试图做的,循环通过并覆盖我所期望的。最好的方法是什么?我猜是$elems.each(函数(索引){this.html(索引)});我会成功的。我的jQuery fu在atm中的状态有点糟糕,但希望您可以基于此导出解决方案。:)聪明。很高兴看到您可以将func直接传递给“text”方法。很酷的解决方案,很聪明。很高兴看到您可以将func直接传递给“text”方法。冷却液。