Как сделать выборку элементов в jQuery?

Допустим, есть вот такая разметка

<div class='a'>
<ul>
<li>высота1</li>
<li>высота2</li>
<li>высота3</li>
</ul>
</div>
<div class='a'>
<ul>
<li>высота4</li>
<li>высота5</li>
<li>высота6</li>
</ul>
</div>


Высота всех элементов li разная. Задача в том, чтобы выбрать элемент из списка с максимальной высотой и задать эту высоту остальным элементам.
Делаю так
var A = $('.a li'), max = 0, elem;
    A.each(function() {
        if (this.offsetWidth > max)
            max = this.offsetWidth, elem = this;
    });

Но в таком случае находится максимальный элемент сразу у двух списков. А мне нужно, чтобы была выборка по каждому списку отдельно. Возможно ли такое реализовать, если классы блоков, в которых лежат эти списки, одинаковые?
  • Вопрос задан
  • 2481 просмотр
Решения вопроса 1
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
$('.a').each(function () {
	var max = 0;

	$(this).find('li')
		.each(function () {
			if (this.offsetHeight > max) {
				max = this.offsetHeight;
			}
		})
		.css({
			height: max + 'px'
		});
});

А для этой задачи display:flex не подойдёт?
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Zoxon
@Zoxon
Веб-разработчик
var maxHeight = 0;
$('li').each(function() {
	var $this = $(this);

	$this.each(function() {
		var height = $(this).height();

		if (height > maxHeight) {
			maxHeight = height;
		}
	});

});
$('li').height(maxHeight);

Надо проверить работоспособность, вроде все правильно
Ответ написан
Комментировать
Serhioromano
@Serhioromano
Web Developer
Может что то там накасячил, писал не проверяя. Но это как бы сама идея в том что надо сделать 2 цикла.

$('.a').each(function(){
    var max = 0;
    $('li', this).each(function(){
        if (this.offsetWidth > max)
            max = this.offsetWidth
    })
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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