Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery sortable-更改时重新分配conscutive元素ID_Jquery_List - Fatal编程技术网

jquery sortable-更改时重新分配conscutive元素ID

jquery sortable-更改时重新分配conscutive元素ID,jquery,list,Jquery,List,我正在将新表单元素添加到可排序列表中。重新排列列表时,我希望ID是连续的。迄今为止的代码: $( "#sortable" ).sortable(); $( "#sortable" ).disableSelection(); var counter = 1; $('a').click(function () { var elems = '<li>' '<input name="q_' + counter + '" type="text"/>'

我正在将新表单元素添加到可排序列表中。重新排列列表时,我希望ID是连续的。迄今为止的代码:

$( "#sortable" ).sortable();
$( "#sortable" ).disableSelection(); 

var counter = 1; 

    $('a').click(function () {
    var elems = '<li>'
    '<input name="q_' + counter + '" type="text"/>' +
    '<select name="type_' + counter + '" >
           <option value="1">1</option>
           <option value="2">2</option>
           <option value="3">3</option>
     </select>' +
    '</li>' ;
    $('#sortable').append(elems);    


    counter++;    
    return false;


});

这将生成一个具有连续ID的列表,这些ID在重新排列时将不同步。如何使用jquery遍历列表并重新分配元素ID?

将函数放入更新回调中


将函数放入更新回调函数中

您可以为此使用更改事件

$("#sortable").sortable({
   change: function(event, ui) {
      // reset all the IDs
      $.each($('select'), function(i, v) {
         this.id = "type_" + i; // or the "name" attribute?
      });
   }
});
您可以为此使用更改事件

$("#sortable").sortable({
   change: function(event, ui) {
      // reset all the IDs
      $.each($('select'), function(i, v) {
         this.id = "type_" + i; // or the "name" attribute?
      });
   }
});

只是想澄清一下:如果您不需要,在排序时更改更新ID可能会导致开销,而在您释放鼠标按钮结束排序时更新ID效果很好。对我的代码稍加修改:$'select'.eachfunctionindex{$this.attr'name','t\'+index;};“+1”是冗余的-创建了01、11、21、31等,但是,由于您将其附加到字符串中,它只是被连接起来:只是为了澄清:如果您不需要,则在排序时更改更新ID可能会导致开销,而在您释放鼠标按钮结束排序时更新ID这非常有效。对我的代码稍加修改:$'select'.eachfunctionindex{$this.attr'name','t\'+index;};“+1”是冗余的-创建了01、11、21、31等。+1使其从1开始,但由于您将其附加到字符串中,它只是被连接起来: