Некоторое время назад я решил проблему для кого-то, кто хотел, чтобы его текстовое поле росло. Я сделал функцию, которая прослушивает события scroll
и keyup
области и пересчитывает количество строк. Я хотел использовать код в другом проекте, но есть проблема. Текстовые области не известны. Чтобы решить эту проблему, я использую live
вместо bind
, так что будущие области также будут связаны.
Теперь я обнаружил, что live
выполняется намного медленнее, чем bind
. Я создал упрощенный пример на jsFiddle. Верхняя текстовая область ведет себя так, как я хочу, но недавно добавленные мерцают из-за поздней сигнализации (я использую Chrome).
Как сделать Проблема в том, что live
таким же быстрым, как bind
?scroll
нельзя использовать с оператором live
. Есть ли способ включить scroll
для live
? Возможно, есть событие jQuery, которое сигнализирует мне о добавлении новой TextArea, поэтому я могу использовать привязку, чтобы добавить scroll
к вновь созданному элементу?
Я с нетерпением жду ваших идей.
EDIT: Изменена ссылка на код. Удален код прокрутки. Добавлена еще одна кнопка для создания другого текстового поля. Проблема связана с «прокруткой». Он не срабатывает.
Пояснение: я не знаю, какая функция создаст текстовое поле. Я вижу мерцание динамически добавляемых полей в Chrome.
Для будущих читателей:
В jQuery 1.3.x с помощью .live() можно было связать только следующие события JavaScript (в дополнение к пользовательским событиям):
click, dblclick, keydown, keypress, keyup, mousedown, mousemove, mouseout, mouseover, and mouseup
. Начиная с jQuery 1.4 метод .live() поддерживает пользовательские события, а также все события JavaScript, которые всплывают. Начиная с jQuery 1.4.1, даже фокусировка и размытие работают с живыми событиями (сопоставление с более подходящим, всплывающим, события фокусируются и фокусируются). Начиная с jQuery 1.4.1 можно указать событие наведения (сопоставление с mouseenter и mouseleave, которые, в свою очередь, сопоставляются с mouseover и mouseout).
elem.height(elem.attr('scrollHeight') - elem.attr('clientHeight') + elem.height());
- person Pointy   schedule 22.01.2011elem.height(1); elem.height(elem[0].scrollHeight - elem[0].clientHeight + elem.height());
- это работает как для увеличения, так и для уменьшения. - person Pointy   schedule 22.01.2011