javascript - 如何根据数组值对html元素进行排序

标签 javascript jquery html arrays

我正在尝试根据输入的数据属性中的项目顺序使用 jQuery 对 html 元素进行排序。 “数据顺序”

请参阅此处的代码设置,但我卡住了。

http://jsbin.com/cixolonoqe/1/edit?html,js,output

HTML:

<div id="control">
   <input type="hidden" data-order="title,text,date">
  </div>
  <div id="parts">

    <p class="date part">20 January 2014</p>
    <h5 class="title part">Some Title</h5>
    <p class="text part">A line of Text</p>

  </div>

jQuery:

var input =  $('#control input');
var partsOrder = input.attr("data-order");

var parts = $('#parts');

parts.find('.part').each(function(i) {
      $(this).attr('data-index', 'index' + i);
});

//Make array from data-order attribute
var partsArray = partsOrder.split(',');

 $.partsArray(json, function(i, val) {


  //modify html order



 });

如果数据顺序字符串发生变化,我希望 html 相应地重新排序。

标题、文本、日期与日期、文本、标题

到目前为止,我已经在零件上添加了一个带有原始索引的新数据属性。并根据数据顺序字符串创建了一个数组,以便循环访问和修改 html。

但我无法理解它。

最佳答案

可以将目标索引放在元素上,获取到一个数组中,根据索引对数组进行排序,然后根据数组重新排列元素:

var partsOrder = $('#control input').attr("data-order").split(',');

var parts = $('#parts');

// set target index for elements
$.each(partsOrder, function(i, v){
  $('.' + v, parts).data('index', i);
});

// sort array on index
var items = parts.find('.part');
items.sort(function(a,b){ return $(a).data('index') - $(b).data('index'); });

// move elements into array order
parts.append(items);

演示:http://jsbin.com/fejegeyoco/2/edit

关于javascript - 如何根据数组值对html元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26945484/

相关文章:

javascript - GooglemapV3 infowindow closeclick 事件未触发

javascript - Chrome 开发者工具 : Way to temporarily ignore or disable all debugger keywords

javascript - jquery addClass 和 removeClass 问题

javascript - 将(无序的)HTML 列表显示为自上而下的树的最佳方式是什么?

html - 如何将图像放置在网页标题中?

JavaScript:仅当单词包含整数 0-9 时,如何从字符串中删除最后一个单词?

javascript - Google 文档的自定义键盘快捷键(更改颜色 - 背景颜色)

jquery - 获取 puppeteer 中元素的子元素

jquery - 如何使用 jquery 切换基于 css 的表列和嵌套内容?

javascript - 如何用新图像替换图像,而不是在 API 提交后添加到页面?