Перебирайте элементы jQuery и сортируйте их, как показано - PullRequest
1 голос
/ 03 декабря 2010

У меня есть неизвестное количество элементов HTML, которые я должен отсортировать по типу карусели.

Представьте, что это список div, подобный следующему:

<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<!-- etc -->

Скажем, у меня, например, 13 делений, которые мне нужно отсортировать.Необходимо сделать следующее:

alt text

Не отвлекайтесь на выделенные 8, это только активные элементы, которые я показываю.

Я не могу понять, может быть, я слишком долго смотрел на это или пробовал слишком много альтернатив.

edit: иллюстрация, возможно, немного отвлекает.

результат, который я хочу получить:

<div>1</div>
<div>3</div>
<div>5</div>
<div>7</div>
<div>9</div>
<div>11</div>
<div>13</div>
<div>2</div>
<div>4</div>
<div>6</div>
<div>8</div>
<div>10</div>
<div>12</div>

Ответы [ 5 ]

3 голосов
/ 03 декабря 2010

Если они были в контейнере, скажем, <div id="container">, просто берет :odd и добавьте их в конце, используя .appendTo(), например:

$("#container div:odd").appendTo("#container");

Вы можете попробовать это здесь .Если они в чем-то другом, концепция такая же, возьмите нечетные, добавьте их к родителю в конце.

3 голосов
/ 03 декабря 2010

Представьте, что у вас есть два ряда #row1 и #row2. Затем вы можете просмотреть оригинальную коллекцию (которая в блоке #collection) следующим образом:

var $row1 = $('#row1');
var $row2 = $('#row2');
$('#collection div').each(function(i) {
    if (i % 2) {
        $(this).appendTo($row2)
    } else {
        $(this).appendTo($row1)
    }
});
2 голосов
/ 03 декабря 2010
$(function() {
   $wrapper = $("#wrapper"); 
   $("div:odd", $wrapper).appendTo($wrapper);
});

Пример: http://jsfiddle.net/Ed2We/

0 голосов
/ 03 декабря 2010
var r1 = new Array();
var r2 = new Array();
$("DIV","#in").each(function(){
    if(parseInt($(this).text()) % 2 == 1 )
        r1.push($(this));
    else
        r2.push($(this));
});
$.fn.append.apply( $("#in"), $.merge(r1,r2));

вывод:

<div>1</div>
<div>3</div>
<div>5</div>
<div>7</div>
<div>9</div>
<div>11</div>
<div>13</div>
<div>2</div>
<div>4</div>
<div>6</div>
<div>8</div>
<div>10</div>
<div>12</div>
0 голосов
/ 03 декабря 2010

Как насчет использования 2 для циклов?

for(var i=0, j=yourList.length/2; i<j; i+=2){
    doSomething(yourList[i]);
}
for(var i=1, j=yourList.length/2; i<j; i+=2){
    doSomething(yourList[i]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...