Подтвердить что ты не робот

JQuery.text() показывает двойной текст

Возникает странная ситуация. У меня есть <h3> с текстом в нем. Когда я извлекаю этот текст с .text(), а затем помещаю его в <textarea>, текст появляется дважды.

Вот jsFiddle.

HTML

<h3 class="profileRightAboutMeText">Heya, this is all the text.</h3>     
<textarea class="profileRightAboutMeTextarea"></textarea>

JQuery

$(document).on('click','h6.editMyProfileSection', function() {
  var originalText = $('h3.profileRightAboutMeText').text();

  $('h3.profileRightAboutMeText').fadeOut('fast', function() {
    $('textarea.profileRightAboutMeTextarea').text(originalText).fadeIn('fast');
  });
  alert(originalText);
});

Оба предупреждения и <textarea> показывают текст двойным следующим образом:

Хейя, это весь текст. Хейя, это весь текст.

4b9b3361

Ответ 1

Я бы сказал, что у вас есть 2 элемента, которые соответствуют $('h3.profileRightAboutMeText') на странице.

Вы можете видеть здесь: http://jsfiddle.net/KwcGB/, что текст появляется дважды, потому что я добавил дополнительный h3.profileRightAboutMeText в html, но если дополнительный строка удаляется, тогда она появляется только один раз.

Попробуйте помещать $('h3.profileRightAboutMeText') в консоль в firebug и видеть, сколько элементов оно соответствует...

Ответ 2

JQuery имеет различное поведение для метода text() в случае дубликатов, которые адресуются составным путем.

Например, пусть

<div id=b class="a">2</div>
<div id=b class="a">3</div>

Тогда

var val1 = $("#b").text()
var val2 = $("#b.a").text()

// val1 = 2
// val2 = 23

Чтобы избежать этой проблемы, используйте .first() точно

var val3 = $("#b.a").first().text()

// val3 = 2

Ответ 3

Для элементов формы вы должны использовать val() вместо text():

$("textarea.profileRightAboutMeTextarea").val(originalText)

Кроме того, проверьте, есть ли у вас дубликаты элементов с классом profileRightAboutMeText.