Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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
Javascript jQuery以正确的顺序插入元素vs detach().sort()?_Javascript_Jquery_Backbone.js_Underscore.js - Fatal编程技术网

Javascript jQuery以正确的顺序插入元素vs detach().sort()?

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 =

假设我有以下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 = 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()); 
    } );​