Javascript jQuery以正确的顺序插入元素vs detach().sort()?
假设我有以下html结构:Javascript jQuery以正确的顺序插入元素vs detach().sort()?,javascript,jquery,backbone.js,underscore.js,Javascript,Jquery,Backbone.js,Underscore.js,假设我有以下html结构: <ul> <li>1</li> <li>2</li> <li>4</li> </ul> 在此处运行:您可以使用jQuery $('li').eq(1).after('<li>3</li>'); $('li')。等式(1)。之后('li>3); 提琴页: 更好的是: var myindex = 3; var insertPoint =
<ul>
<li>1</li>
<li>2</li>
<li>4</li>
</ul>
在此处运行:您可以使用jQuery
$('li').eq(1).after('<li>3</li>');
$('li')。等式(1)。之后('li>3);
提琴页:
更好的是:
var myindex = 3;
var insertPoint = myindex -2;
$('li').eq(insertPoint).after('<li>' + myindex +'</li>');
var-myindex=3;
var insertPoint=myindex-2;
$('li').eq(insertPoint).after(''+myindex+' ');
对此进行了修改:我最近也遇到了同样的问题,我使用以下函数进行了修复
function sortInsert(parent, element, fnc) {
var stack = parent.children().filter(function() {
return fnc($(this), element) > 0;
});
if (stack.length == 0) {
parent.append(element);
} else {
stack.first().before(element);
}
}
sortInsert($('ul'), $('<li>1</li>'), function(e, a) {
return parseInt(e.html()) - parseInt(a.html());
} );
函数sortInsert(父项、元素、fnc){
var stack=parent.children().filter(函数()){
返回fnc($(此),元素)>0;
});
if(stack.length==0){
parent.append(元素);
}否则{
stack.first().before(元素);
}
}
sortInsert($('ul'),$('li>1'),函数(e,a){
返回parseInt(e.html())-parseInt(a.html());
} );
它基本上是获取父级的所有子级,然后进行过滤。如果您只需要比较它的值,您可以通过避免回调来简单地进行比较,但在我的例子中,这是需要的,因为我是按几个标准排序的
如果要按降序排序,只需将append
替换为prepend
,before
替换为last
,将first
替换为last
,它应该可以正常工作
请随意在我的操场上玩:
function sortInsert(parent, element, fnc) {
var stack = parent.children().filter(function() {
return fnc($(this), element) > 0;
});
if (stack.length == 0) {
parent.append(element);
} else {
stack.first().before(element);
}
}
sortInsert($('ul'), $('<li>1</li>'), function(e, a) {
return parseInt(e.html()) - parseInt(a.html());
} );