Я использую JQuery, чтобы выбрать некоторые элементы на странице, а затем переместить их в DOM. У меня проблема в том, что мне нужно выбрать все элементы в обратном порядке, который JQuery, естественно, хочет выбрать. Например:
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
</ul>
Я хочу выбрать все элементы li и использовать для них команду .each (), но я хочу начать с пункта 5, затем пункта 4 и т. Д. Возможно ли это?
javascript
jquery
arrays
reverse
Джек Миллс
источник
источник
<li>Item 5</li>
0..get()
что превращает упакованный массив jQuery в обычный массив JS. Массив JS имеет.reverse()
.Array.reverse()
оба изменяют массив на месте и возвращают обратный массив. Таким образом, это решение на самом деле основывается на том, что $ (). Get () возвращает новый массив, а не ссылку на какой-либо внутренний массив jQuery или DOM. Вероятно, безопасная ставка в рамках этого примера. Будьте кодировщиком.Я представляю вас самым чистым способом из самых маленьких в мире плагинов jquery:
Применение:
-Все благодарность Майклу Гири в его посте здесь: http://www.mail-archive.com/discuss@jquery.com/msg04261.html
источник
this
объект имеет числовые свойства и свойство длины, поэтому javascript может индексировать его и может применять функцию массива к экземпляру jQuery?<li>Item 5</li>
0.Array.prototype.reverse
кjQuery.prototype.reverse
. Многие из методов массива JavaScript будут отлично работать на любом объекте, который достаточно похож на массив - то есть, если объект имеет.length
свойства числового индекса.reverse
не зависит от некоторого внутреннего представления массива; он получает доступ к массиву , используя нормальный.length
,[0]
, и[1]
т.д. так же , как код массива вы пишете сами.reverse
метод? Разве не было бы быстрее просто скопировать ссылку на функциюArray.prototype.reverse
, напримерjQuery.fn.reverse = Array.prototype.reverse;
? Не такой короткий и «умный», но более эффективный? По общему признанию это, вероятно, будет незаметно в современных молниеносных браузерах, но все же ...Ты можешь сделать
с последующим
источник
Вот разные варианты для этого:
Во-первых : без JQuery:
Демо здесь
... и с помощью jQuery:
Вы можете использовать это:
Демо здесь
Другой способ, используя также jQuery с reverse :
Это демо здесь .
Еще одна альтернатива - использовать
length
(количество элементов, соответствующих этому селектору) и перейти оттуда кindex
каждой итерации. Тогда вы можете использовать это:Это демо здесь
Еще один вид, связанный с вышеупомянутым:
Демо здесь
источник
Я предпочитаю создавать обратный плагин, например
Использование, например:
источник
Если вы не хотите сохранять метод в jQuery.fn, вы можете использовать
источник
Нужно было сделать обратное на $ .each, поэтому я использовал идею Vinay:
работал хорошо, спасибо
источник
$.each(collection.reverse(), ...)
.Вы не можете выполнять итерацию в обратном направлении с каждой функцией jQuery, но вы все равно можете использовать синтаксис jQuery.
Попробуйте следующее:
источник
Я нашел
Array.prototype.reverse
неудачный с объектами, так что я сделал новую функцию JQuery , чтобы использовать в качестве альтернативы:jQuery.eachBack()
. Он выполняет итерацию, как обычноjQuery.each()
, и сохраняет каждый ключ в массиве. Затем он инвертирует этот массив и выполняет обратный вызов исходного массива / объекта в порядке обращенных ключей.источник
Я думаю тебе нужно
источник
Вы также можете попробовать
источник