2017-02-17 2 views
1

Здравствуйте, у меня есть эта проблема, я использую magento, и я не могу найти место, как переключить свои вкладки на место, поэтому я подумал, что JQuery может прийти в руки. Так это то, что я есть в качестве примераКак отсортировать элементы списка на основе атрибута id с помощью jquery?

<li id="tab-4"> 
<li id="tab-3"> 
<li id="tab-2"> 
<li id="tab-1"> 

И мне нужно, чтобы сделать его

<li id="tab-1"> 
<li id="tab-2"> 
<li id="tab-3"> 
<li id="tab-4"> 

Есть ли быстрый способ сделать это? Или я должен делать это один за другим?

+1

И , Где ваш медленный метод? – Satpal

+0

Вы пытаетесь обновить пурпурный код, который генерирует эту страницу или вы ищете или функцию, которая делает это после того, как magento уже отобразил страницу? – Shilly

+0

Я пытаюсь сделать это после того, как я использую шаблоны Porto и пользовательские вкладки, и я даже не могу найти, как отключить вкладки по умолчанию. Так что было бы проще переключиться после загрузки страницы –

ответ

6

Я предполагаю, что у вас есть <ul> вокруг <li>

ul = $('ul'); // your parent ul element 
 
ul.children().each(function(_,li){ul.prepend(li)})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul> 
 
<li id="tab-4">4</li> 
 
<li id="tab-3">3</li> 
 
<li id="tab-2">2</li> 
 
<li id="tab-1">1</li> 
 
</ul>

+0

Было бы даже лучше, если бы вы заменили неиспользованную переменную 'i' с '_'. –

1

Чистый раствор JS.

var a = document.getElementsByTagName('li'); 
 
var b = document.getElementById('list'); 
 
var arr = []; 
 

 
Array.from(a).forEach(v => arr.push(v)); 
 
arr.reverse().forEach(v => b.append(v));
<ul id='list'> 
 
    <li id="tab-4">4</li> 
 
    <li id="tab-3">3</li> 
 
    <li id="tab-2">2</li> 
 
    <li id="tab-1">1</li> 
 
</ul>

0

Кроме того, для гуманного рабочего (на самом деле сортировки), независимо от первоначального заказа вы можете использовать sort() и append так:

$("ul li").sort(function(a,b){ 
 
    if(a.id.substring(4, 5) < b.id.substring(4, 5)) { 
 
     return -1; 
 
    } else { 
 
     return 1; 
 
    } 
 
}).each(function() { $('ul').append(this);});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul> 
 
    <li id="tab-4">4</li> 
 
    <li id="tab-1">1</li> 
 
    <li id="tab-3">3</li> 
 
    <li id="tab-2">2</li> 
 
</ul>

Смежные вопросы