如何获得重新排序的元素的顺序

时间:2011-11-06 17:44:26

标签: jquery indexing element

我有关于获得我的div的命令的问题。

场景:我有这样的结构:

<div class="container">
<div class="element" id="element1">
<div class="element" id="element2">
<div class="element" id="element3">
<div class="element" id="element4">

但我正在重新排序/删除/添加一些与某些条件相关的元素 所以假设最终结构如下:

<div class="container">
<div class="element" id="element6">
<div class="element" id="element2">
<div class="element" id="element8">
<div class="element" id="element4">
<div class="element" id="element1">
<div class="element" id="element7">

最后我想得到最终顺序的元素列表 我正在使用

var ord= '';
for (i=1;i<=($('.element').length);i++){
  var index = $('#element'+i).index();
  ord+= index+' / ';
}

但它给出了创建顺序中元素的索引,而不是最终顺序。 最后,我认为我需要从其索引中获取项目ID,如

var index = indexof($('#element'+i)); // ok this is not lookink like correct :)

但我找不到。

3 个答案:

答案 0 :(得分:5)

对于这个html:

<div class="container">
    <div class="element" id="element6">1</div>
    <div class="element" id="element2">2</div>
    <div class="element" id="element8">3</div>
    <div class="element" id="element4">4</div>
    <div class="element" id="element1">5</div>
    <div class="element" id="element7">6</div>
</div>

和这个javascript:

var arr = Array();
$('.container .element').each(function(){
   arr.push($(this).attr('id').replace('element', ''));
})

你明白了:

arr = ["6", "2", "8", "4", "1", "7"]

答案 1 :(得分:3)

这个标记(重新排序的元素......):

<div class="container">
    <div class="element" id="element4"></div>
    <div class="element" id="element1"></div>
    <div class="element" id="element5"></div>
    <div class="element" id="element6"></div>
    <div class="element" id="element7"></div>
</div>

$('。container')。find('。element')命令将按照文档中显示的顺序生成元素。

elements = $('.container').find('.element')
console.log(elements[0].id) // will print out 'element4'
console.log(elements[2].id) // ---> 'element5'

依旧......

从'elementX'字符串中获取数字id只需执行

parseInt(elements[3].id.replace('element','')) // will return 6

答案 2 :(得分:1)

我认为你最好只创建一个N元素数组并用div的起始顺序初始化它。然后,每次交换元素并更改它们的顺序时,您都会通过交换相应的元素来更新数组,并且每次只读取数组以获取当前的顺序。

例如,假设你有10个元素,用以下代码初始化数组:

order = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

每次进行一些重新排序时,假设您将元素编号X与元素编号Y交换,您还交换相应的数组元素:

swap(order, X, Y);

(顺便说一句,你必须定义一个交换函数)。 所以order数组每次都会包含当前的顺序。