#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() затмевает другие итераторы с точки зрения производительности. Если вы сможете разработать способ использования одного из высокопроизводительных итераторов, показанных на этой странице, вы, очевидно, увидите лучшие результаты.
редактировать: это РАБОТАЕТ, но есть ли преимущество в производительности, я не могу сказать:
var $textarea = $('textarea');
numTextareas = $textarea.length;
for (var i = 0, len = numTextareas; i < len; i ) {
$textarea.eq(i).height($textarea.parent().height());
}