Мне было интересно, можете ли вы помочь мне сократить количество операций в следующей функции.Как я могу оптимизировать эту функцию, чтобы сделать произвольное число divs одинаковой высоты?
function equi_hghts (S)
{
/* S: Array of strings which are selectors of elements which are to be given the same height */
var n = S.length;
var ES = []; /* Elements selected by S */
for (var i = 0; i < n; ++i)
ES.push($(S[i]));
var maxHeight = 0;
for (var i = 0; i < n; ++i)
{
var thisHeight = ES[i].height;
if (thisHeight > maxHeight)
maxHeight = thisHeight;
}
for (var i = 0; i < n; ++i)
{
ES[i].height(maxHeight);
}
}
Например, я знаю, что кусок
for (var i = 0; i < n; ++i)
{
ES[i].height(maxHeight);
}
будет иметь 1 бесполезную операцию, так как один DIV будет получать набор до высоты, это уже в. Я также ищу способ сократить количество циклов.
И есть еще одна вещь, которая поможет: После следующей порции
for (var i = 0; i < n; ++i)
ES.push($(S[i]));
Я хотел бы удалить память, выделенную для S
. Спасибо.
Мне нравится этот подход. Передача функции jQuery для отображения является блестящей, как и объединение массива в конце. Однако это вызовет 2 просмотра DOM для каждого элемента. Я бы сказал, что это оптимизировано для удобства чтения, но вы можете сделать лучше для производительности, чтобы он работал с одним поиском для каждого элемента. – Malk