Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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 元素';排序并再次选择后进行排序_Jquery_Jquery Ui_Dom_Jquery Ui Sortable - Fatal编程技术网

Jquery 元素';排序并再次选择后进行排序

Jquery 元素';排序并再次选择后进行排序,jquery,jquery-ui,dom,jquery-ui-sortable,Jquery,Jquery Ui,Dom,Jquery Ui Sortable,我有这个HTML: <ul> <li>a</li> <li>b</li> </ul> 在更改元素的顺序后,我可以在Chrome的Inspect元素中看到DOM的更改,但是在控制台或另一个函数中选择排序的元素$('ul li')会返回初始顺序。 如何以新的顺序获取元素列表?它工作正常,但您需要告诉jQuery发生了什么。例如,在调用任何sortable()函数后,您应该询问li项的顺序 例如: $(func

我有这个HTML:

<ul>  
   <li>a</li>
    <li>b</li>
</ul>
在更改元素的顺序后,我可以在Chrome的Inspect元素中看到DOM的更改,但是在控制台或另一个函数中选择排序的元素
$('ul li')
会返回初始顺序。
如何以新的顺序获取元素列表?

它工作正常,但您需要告诉jQuery发生了什么。例如,在调用任何sortable()函数后,您应该询问
li
项的顺序

例如:

$(function() {
    $( "#sortable" ).sortable({
      revert: true,
      start: function(evt, ui) {
          $('#log').html("");
      },
      stop: function(evt, ui) {
          //alert( $( "li" ).first().html() );
          $( "li" ).each(function( index ) {
              $('#log').append( $( this ).text() + " " );
          });
      }
    });
});
其中,我循环遍历每个
$(“li”)
,它给出了正确的顺序

请参阅此JSFIDLE以了解结果:


除了在
stop:
方法中编写所有函数外,您还可以像下面这样调用任何外部函数。确保每次使用
.sortable()
函数时都调用它

$(function() {
    $( "#sortable" ).sortable({
      revert: true,
      stop: function(evt, ui) {
          myFunction();
      }
    });
});

function myFunction()
{
    $('li').each(function()
    {
        $(this).off();              // delete any previously defined function
        $(this).click(function()    // define a new function
        {
            alert('My position is: '+$("li").index( $(this) ));
        });
    });
}
当然,如果函数没有显式使用任何元素的索引,则不需要这样做。然后只需定义一次函数

以下是JSFIDLE演示中的最后一段代码:


如果您使用Chrome的开发者工具的元素部分(非常方便),那么您可以看到更新元素列表,如下所示,
li
元素在排序后按降序排列:


$(“ul”).parent().html()将是一个如何
$(“ul”).find(“li”)
?@JNF:same order(initial)@mplungjan我需要选择元素,而不是整个html然后只需删除.parent()
$(function() {
    $( "#sortable" ).sortable({
      revert: true,
      stop: function(evt, ui) {
          myFunction();
      }
    });
});

function myFunction()
{
    $('li').each(function()
    {
        $(this).off();              // delete any previously defined function
        $(this).click(function()    // define a new function
        {
            alert('My position is: '+$("li").index( $(this) ));
        });
    });
}