Вычисление общей ширины всех элементов списка?

У меня есть стандартная УЛ. следующим образом:

<ul>
  <li><a href="">Link</a></li>
  <li><a href="">Link</a></li>
  <li><a href="">Link</a></li>
  <li><a href="">Link</a></li>
  <li><a href="">Link</a></li>
</ul>

Я пытаюсь найти быстрый и эффективный способ вычислить объединенное со всех тегов LI. В настоящее время я имею:

var width = 0;

$('ul li').each(function() {
 width += $(this).outerWidth();
});

Я просто задаюсь вопросом, существует ли более быстрый способ получить тот же результат, не используя цикл?

Спасибо за помощь!

9
задан Fred 16 June 2010 в 22:53
поделиться

3 ответа

Чтобы получить именно то, что вы хотите, нет. Это просто не тот случай, который хорошо сочетается с существующими функциями, цикл, как у вас, - самый быстрый способ. Ходят разговоры о том, чтобы добавить .childWidth() или что-то в ядро... но я бы не стал задерживать дыхание :)

Другие ответы включают ширину родителя, включая дополнительное пространство, но это обычно не то, что вам нужно, так что пока... придерживайтесь цикла, как у вас. Все, что будет добавлено более короткое, будет гарантированно выполнять тот же объем работы (возможно, идентичный код).

5
ответ дан 3 November 2019 в 07:12
поделиться

Вы можете получить ширину самого элемента ul, но это даст вам ширину включая пули и поля:

var width = $("ul").outerWidth();
0
ответ дан 3 November 2019 в 07:12
поделиться

Если это меню и элементы расположены рядом друг с другом (а не ниже), попробуйте $ ('ul'). outerWidth ( ) .

[EDIT] Если ширина ul фиксирована, найдите последний элемент списка и посмотрите на его правое смещение. Поскольку смещение всегда относительно родительского элемента, все, что вам нужно сделать, это добавить offsetLeft и offsetWidth , чтобы получить общую ширину всех дочерних элементов.

0
ответ дан 3 November 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: