Javascript 在可排序JQuery中动态地为列表元素值分配索引值

Javascript 在可排序JQuery中动态地为列表元素值分配索引值,javascript,jquery,Javascript,Jquery,我需要有一个可排序列表,其中我需要将每个列表元素的值设置为其索引值,例如。例如,如果元素ex1变为第二个,那么我需要为它设置一个值1(从0开始计数),如果元素ex2变为第三个,那么值2,依此类推。我试图通过在sortable的update方法中设置值来实现这一点。但每次我尝试运行时,它都不会更新值状态,它会在默认初始值上堆叠 这里是Js fiddle,您可以检查它(只需更改列表上的顺序并检查devtools中的值,看看它是如何保持不变的) 您当前的代码将更新列表的值,您可以在开发者窗口中看到。我

我需要有一个可排序列表,其中我需要将每个列表元素的值设置为其索引值,例如。例如,如果元素ex1变为第二个,那么我需要为它设置一个值1(从0开始计数),如果元素ex2变为第三个,那么值2,依此类推。我试图通过在sortable的update方法中设置值来实现这一点。但每次我尝试运行时,它都不会更新值状态,它会在默认初始值上堆叠

这里是Js fiddle,您可以检查它(只需更改列表上的顺序并检查devtools中的值,看看它是如何保持不变的)


您当前的代码将更新列表的值,您可以在开发者窗口中看到。我在下面放了一张同样的图片

如果您正在查找要更改的文本,则可以使用以下代码

你可以试试

orderedList.each(function(idx,value) {$(this).text(idx); }) 

我从您的问题中了解到,请尝试以下代码

$('ul')。可排序({
更新:函数(){
常量orderedList=$('li');
orderedList.each(函数(idx){
$(this.find('span').html(“示例”+(idx+1));
});
const getValue=$('li:first child').find('input').val();
$('h4').text(getValue);
}
});
li{
列表样式:无;
}

  • 例1
  • 例2
  • 例3

您可以只更新您的函数,基本上您是在全局定义常量值,所以该值不会更新。当您修改集合时

$('li').each(function(idx){
  $(this).attr("value", idx);
})

const getValue = $('li:first-child').attr("value");
$('h4').text(getValue);

$('ul').sortable({
  update: function() {
    var _li= $('li');
    _li.removeAttr("value");
    _li.each(function(idx) {
      var currentObj=$(this);
      console.log(currentObj.text());
      $(this).attr("value", idx);
    })
  }
});

请参阅更新的代码

li标记没有任何值属性,也不能有。您是否尝试过此函数:orderedList。每个(函数(idx,value){$(this.attr(“value”,idx);})尝试此函数而不是orderedList。每个(函数(idx){$(this.text(idx);})您是对的,但是我不明白为什么我需要删除属性来更新它。非常感谢。为了安全起见:)
$('li').each(function(idx){
  $(this).attr("value", idx);
})

const getValue = $('li:first-child').attr("value");
$('h4').text(getValue);

$('ul').sortable({
  update: function() {
    var _li= $('li');
    _li.removeAttr("value");
    _li.each(function(idx) {
      var currentObj=$(this);
      console.log(currentObj.text());
      $(this).attr("value", idx);
    })
  }
});