javascript - 根据属性值在另一个元素之前插入元素

标签 javascript jquery html

我动态创建了一个 DIV,并希望根据它们的属性值在其他 Div 之间定位。

我想按顺序排列。

<div data-door="1">1</div>
<div data-door="3">3</div>
<div data-door="4">4</div>
<div data-door="6">6</div>

我的下面的代码有效,但在某些时候中断,新的 div 开始乱序。

乱序的例子 1个 2个 2个 3个 4个 5个 4

<input id="txtValue" type="text" > 
<button id="addMe">Add</button>
<div id="container">
    <div data-door="3">3</div>
</div>
$("#addMe").click(function(){
    var strValue = $("#txtValue").val()
    var newDiv = '<div data-door="' + strValue + '">'+ strValue +'</div>'

    //loop thru all divs with data-door
    $('*[data-door]').each(function(){
        console.log($(this).attr("data-door"))
        if ( $(this).attr("data-door") >= strValue ) {

            $(this).prepend(newDiv)
            return false; 
        }
        else{
            $("#container").append(newDiv)
            return false; 
        }

    });

});

这是 JSFiddle https://jsfiddle.net/czcz/1sg5gyqj/26/

我不明白为什么会这样

最佳答案

太复杂了:

$("#addMe").click(function(){
	var strValue = $("#txtValue").val();
	var str = '<div data-door="' + strValue + '">'+ strValue +'</div>';
  var wrapper = $('#container');
  $(wrapper).append(str);
  $('div[data-door]').sort(sortIt).appendTo(wrapper);
});
   
function sortIt(a, b){
    return ($(b).data('door')) < ($(a).data('door')) ? 1 : -1;    
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="txtValue" type="text" > 
<button id="addMe">Add</button>

<div id="container">

</div>

关于javascript - 根据属性值在另一个元素之前插入元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40983554/

相关文章:

javascript - 尝试按字母顺序排列 jQuery UI Accordion ;适用于除 IE 之外的所有内容

javascript - 检查父复选框不会检查子复选框

javascript - 对 getElementById 的 onload 调用返回 null

javascript - 将 Node.js 应用程序部署到 Heroku 时出现 "ReferenceError: compression is not defined"

javascript - 使用任何其他元素作为复选框的标签

javascript - AngularJS - 按应用了过滤器的对象属性过滤列表

javascript - SweetAlert - 更改模式颜色

jQuery:砌体排水沟宽度问题

javascript - 用于 jQuery 输入验证的正则表达式

javascript - 通过 CSS3 模拟垂直轮胎上的旋转动画