То, что я сделал до сих пор был следующим:Показать определенное количество случайных объектов из выделения и скрыть все остальные с помощью js/jQuery?
function randomSelectObjects(randObjects, countShow){
var i = 0;
var countRandObjects = randObjects.length;
var preselectedObj = false;
randObjects.hide(); // hide all items
while (i < countShow) { // while until we found enough items we can show
preselectedObj = randObjects.eq(Math.floor(Math.random()*countRandObjects)); // random select an object
if(preselectedObj.is(':hidden')){ // make sure it is not already unhidden
preselectedObj.show(); // show the object
i++; // up the counter – done only in case it was not already visible
}
}
}
Использование:
var randObjects = $('.items');
randomSelectObjects(randObjects, 1);
Проблема заключается в том, что я буду работать в выборе уже выявлено (show()
) элемента внутри while
время от времени. Я хотел бы удалить лишние накладные расходы.
К сожалению, кажется, что нет способа удалить объект из кешированного выделения. remove()
также удаляет объект из DOM, который не является (всегда) тем, что я хочу.
Клонирование выбора объектов сначала, а затем с использованием remove()
будет работать для процесса выбора, но тогда накладные расходы будут соответствовать выбранным элементам с живым DOM для фактически show()
.
Спасибо за ваше предложение! Переключение моего фрагмента с вашим, я получил расчет страниц, как навсегда, прежде чем показывать контент. Я расследую и дам вам знать, как только я это выясню. (Ошибка может быть где-то еще ...) – Hafenkranich