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>
показывают текст двойным следующим образом:
Хейя, это весь текст. Хейя, это весь текст.
Ответы
Ответ 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
.