Как установить высоту текстовой области с помощью jQuery

#jquery #css

#jquery #css

Вопрос:

В некоторых ячейках есть таблица и много текстовых областей. Ячейки с текстовой областью занимают несколько строк (2, 3, 4 или более строк). Я хочу, чтобы текстовые области занимали целые области ячеек.

Я могу сделать это с помощью jQuery, но это занимает слишком много времени, и браузер выдает предупреждение.

 $("textarea").each(function() {
  $(this).height($(this).parent().height());
});
  

Есть ли лучший способ?

Спасибо.

Сэм

Ответ №1:

Я что-то упускаю или почему вы не можете просто использовать высоту стиля css: 100% для текстовых областей?

Смотрите этот jsFiddle: http://jsfiddle.net/J2njk /

Комментарии:

1. Это будет работать, если вы укажете определенную высоту. Это не будет работать с автоматической высотой (поведение браузера по умолчанию) или с минимальной высотой. Но я согласен; если указаны высоты, это должно быть сделано с помощью CSS, а не JS.

Ответ №2:

Я проверил этот тест:

http://jsperf.com/jquery-each-vs-for-loop/4

Который (после запуска тестов) показывает, что .each() затмевает другие итераторы с точки зрения производительности. Если вы сможете разработать способ использования одного из высокопроизводительных итераторов, показанных на этой странице, вы, очевидно, увидите лучшие результаты.

редактировать: это РАБОТАЕТ, но есть ли преимущество в производительности, я не могу сказать:

http://jsfiddle.net/T7wzT/1/

 var $textarea = $('textarea');
numTextareas = $textarea.length;
for (var i = 0, len = numTextareas; i < len; i  ) {
 $textarea.eq(i).height($textarea.parent().height());
}