Jquery 元素';排序并再次选择后进行排序
我有这个HTML: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
<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) ));
});
});
}