Упорядочить элементы
Здравствуйте!
Есть список дивов с id="a" и "b". Они идут в произвольном порядке. Как их разместить, чтобы сначала шли дивы id="a", за ними id="b" Спасибо! |
Чтобы переставить элемент относительно другого элемента можно использовать .insertBefore() и .insertAfter() jQuery
Я бы сделал массив с алфавитом, брал id, сравнивал первую букву с элементом массива... Короче в итоге вы получаете чуть более расширенную задачу чем сортировка массива. |
<script src="http://code.jquery.com/jquery-latest.js"></script> <div class=WRP> <div id=d>id=d</div> <div id=b>id=b</div> <div id=c>id=c</div> <div id=a>id=a</div> </div> <script> var divs =$('div[id]'); var arr=[]; for (var i=0;i<divs.length;i++) { arr.push(divs.eq(i).attr('id')); } arr = arr.sort(); for (var i=0;i<arr.length;i++) { $('#'+arr[i]).appendTo('.WRP'); } </script> |
Вариант ...
<!DOCTYPE HTML> <html> <head> <title></title> </head> <body> <script src="http://code.jquery.com/jquery-latest.js"></script> <div class=WRP> <div id=d>id=d</div> <div id=b>id=b</div> <div id=c>id=c</div> <div id=a>id=a</div> </div> <script> var divs =$('.WRP div'); var arr = jQuery.makeArray(divs).sort(function f(a,b) { var c = 0 if (a.id > b.id ) c = 1; if (a.id < b.id ) c = -1; return c }); $(arr).appendTo('.WRP') </script> </body> </html> |
Вариант для ненормально одинаковых id
<!DOCTYPE HTML> <html> <head> <title></title> </head> <body> <script src="http://code.jquery.com/jquery-latest.js"></script> <div class=WRP> <div id=a>id=a</div> <div id=a>id=a</div> <div id=b>id=b</div> <div id=b>id=b</div> </div> <script> var divs_a =$('.WRP div[id="a"]'); var divs_b =$('.WRP div[id="b"]'); divs_a.each(function(indx, element){ $(element).appendTo('.WRP'); divs_b.eq(indx).appendTo('.WRP') }); </script> </body> </html> |
Цитата:
<script type="text/javascript"> function sort() { var ob=document.getElementById('box'); var move,oa,i; do { oa=ob.getElementsByTagName('div'); move=false; for (i=1; i<oa.length; i++) { if (oa[i-1].id>oa[i].id) { ob.insertBefore(oa[i],oa[i-1]); move=true; }; }; } while (move) } </script> <div id='box'> <div id='d'>id=d</div> <div id='b'>id=b</div> <div id='c'>id=c</div> <div id='a'>id=a</div> </div> <button onclick='sort()'>Sort</div> |
Цитата:
Дивы с классами всего двух типов, a и b. Изначальное количество и порядок следования произвольны. Пересортировать, чтобы сначала шли только а, потом только b. Код в цитате для случая b b a дал результат b a b :( Спасибо! |
nule,
<!DOCTYPE HTML> <html> <head> <title></title> </head> <body> <script src="http://code.jquery.com/jquery-latest.js"></script> <div class=WRP> <div id=b>id=b</div> <div id=b>id=b</div> <div id=a>id=a</div> </div> <script> var divs =$('.WRP div'); var arr = jQuery.makeArray(divs).sort(function f(a,b) { var c = 0 if (a.id > b.id ) c = 1; if (a.id < b.id ) c = -1; return c }); $(arr).appendTo('.WRP') </script> </body> </html> |
nule,
или так <!DOCTYPE HTML> <html> <head> <title></title> </head> <body> <script src="http://code.jquery.com/jquery-latest.js"></script> <div class=WRP> <div id=a>id=a</div> <div id=b>id=b</div> <div id=b>id=b</div> <div id=a>id=a</div> </div> <script> var divs_a =$('.WRP div[id="a"]'); var divs_b =$('.WRP div[id="b"]'); divs_a.appendTo('.WRP'); divs_b.appendTo('.WRP') </script> </body> </html> |
Цитата:
|
Часовой пояс GMT +3, время: 05:39. |