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

发布于 2024-12-14 03:24:11 字数 978 浏览 6 评论 0原文

我在获取 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 :)

但我没找到。

i have a problem about getting order of my divs.

Scenario : i have a structure like this :

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

but i am re-ordering / deleteing / adding some elements related to some conditions
So suppose that final structure like this:

<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">

and finally i want to get a list of elements in final order
I'am using

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

but it gives me the indexes of elements in creation order, not final order.
Finally, i think that i need to get the item id from its index like

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

But no way i found.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

晨曦慕雪 2024-12-21 03:24:11

对于这个 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"]

For this 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>

and this javascript:

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

you get this:

arr = ["6", "2", "8", "4", "1", "7"]
勿挽旧人 2024-12-21 03:24:11

对于此标记(重新排序的元素...):

<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

for this markup (the reordered elements...):

<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>

the $('.container').find('.element') command will produce the elements in the order as they appear on the document.

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

and so on....

to get the numerical id out of the 'elementX' string just do

parseInt(elements[3].id.replace('element','')) // will return 6
一瞬间的火花 2024-12-21 03:24:11

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

例如,假设您有 10 个元素,则可以使用以下方法初始化数组:

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

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

swap(order, X, Y);

您必须定义一个顺便说一句,交换函数)。
因此 order 数组每次都会包含当前订单。

I think you're better off just creating an array of N elements and initializing it with the starting order of the divs. Then, every time you swap elements and change their order you update the array by swapping the corresponding elements and just read the array every time to get the current order.

For example, let's say you have 10 elements, you initialize the array with:

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

Every time you do some reordering, let's say you swap element number X with element number Y you also swap the corresponding array elements:

swap(order, X, Y);

(You'll have to define a swap function, by the way).
So the order array will contain the current order at every time.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文