Дублирование текста в абзаце из-за $(element).end()?

У меня есть div с классом textareaedit, который может содержать более одного p (абзаца). Но я хочу взять только последний абзац и разобраться с этим текстом.

Мой HTML такой:

<div class="textareaedit">
<p>  </p>
<p>  </p>
</div>

И мой javascript:

$thisinput = $('forminput');

$taedit = $('.textareaedit');
    var $target = $taedit.children(); //in case there is more than one <p> here

  while( $target.length ) {
  $target = $target.children();
   }            

  $target.end().text($thisinput.val()) ;

Этот код срабатывает всякий раз, когда пользователь оставляет фокус на элементе формы forminput. Я хочу, чтобы текст пользователя переходил на $taedit. Но если $taedit содержит более одного абзаца, то каждый раз, когда пользователь вводит forminput, $taedit дублирует текст внутри него.

Пример: если $taedit имеет только один p, то когда пользователь вводит This is my text, тогда $taedit выглядит так:

This is my text

Но если $taedit имеет два p, то когда пользователь вводит This is my text (только один раз!), тогда $taedit выглядит так:

This is my text
This is my text

И если пользователь вводит его снова, он удваивается:

This is my text
This is my text
This is my text
This is my text

Я понимаю, что что-то должно происходить из-за цикла while, но чего я не понимаю, так это того, что я вызываю $target.end() только один раз... так что текст должен добавляться только к последнему абзацу? Моя цель состоит в том, чтобы не было дубликатов, независимо от того, сколько p существует.


person user961627    schedule 20.01.2013    source источник


Ответы (1)


Не знаете, зачем вообще нужен цикл while? Вы можете заменить цикл while и последний оператор на:

$target.last().text($thisinput.val());
person mccannf    schedule 20.01.2013