【发布时间】:2021-09-27 00:57:31
【问题描述】:
我有一个包含 2 个值“Rank”和“Parameter”的数组,我正在循环它们以在父 Div 中创建多个 Div。
jQuery(document).ready(function ($) {
var BrandArray = {
"Brand1" : [{"Parameter":"XXX", "Rank":"#3"}],
"Brand2" : [{"Parameter":"AAA", "Rank":"#2"}],
"Brand3" : [{"Parameter":"MMM", "Rank":"#1"}],
}
var markup = '';
BrandArrayKeys = Object.keys(BrandArray)
jQuery.each(BrandArrayKeys, function(index, value){
markup += '<div id="BrandBlock">'
markup += '<div>' + BrandArray[value][0].Rank + '</div>'
markup += '<div>' + BrandArray[value][0].Parameter + '</div>'
markup += '</div>'
});
$("#list").html(markup);
});
然后我在此之后使用排序函数来确保它显示为按 Rank 排序
jQuery(document).ready(function ($) {
var sortedList = $('#BrandBlock').toArray().sort(function(lhs, rhs){
return $(lhs).find("#Rank").text().replace( /^\D+/g, '') - $(rhs).find("#Rank").text().replace( /^\D+/g, '');
});
console.log(sortedList)
$("#list").empty().html(sortedList);
});
这不起作用,页面中只出现一个“Div”。但是,当 DIV 表已经驻留在 HTML 本身而不是由 jQuery 构建时,此公式有效。
我哪里错了?
在下面找到整个工作代码:
jQuery(document).ready(function($) {
var BrandArray = {
"Brand1": [{
"Parameter": "XXX",
"Rank": "#3"
}],
"Brand2": [{
"Parameter": "AAA",
"Rank": "#2"
}],
"Brand3": [{
"Parameter": "MMM",
"Rank": "#1"
}],
}
var markup = '';
BrandArrayKeys = Object.keys(BrandArray)
jQuery.each(BrandArrayKeys, function(index, value) {
markup += '<div id="BrandBlock">'
markup += '<div>' + BrandArray[value][0].Rank + '</div>'
markup += '<div>' + BrandArray[value][0].Parameter + '</div>'
markup += '</div>'
});
$("#list").html(markup);
});
jQuery(document).ready(function($) {
var sortedList = $('#BrandBlock').toArray().sort(function(lhs, rhs) {
return $(lhs).find("#Rank").text().replace(/^\D+/g, '') - $(rhs).find("#Rank").text().replace(/^\D+/g, '');
});
$("#list").empty().html(sortedList);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<div id="list"></div>
【问题讨论】: