发生了奇怪的情况。我有<h3>
的文字。当我使用.text()提取此文本然后将其放入<textarea>
时,文本会出现两次。
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>
都会将文字双重显示如下:
Heya,这就是全文.Heya,这就是全文。
答案 0 :(得分:16)
我会说你在页面上有两个与$('h3.profileRightAboutMeText')匹配的元素。
你可以在这里看到:http://jsfiddle.net/KwcGB/文本出现两次,因为我在html中添加了额外的h3.profileRightAboutMeText,但如果删除了额外的行,那么它只出现一次。
尝试将$('h3.profileRightAboutMeText')放入firebug中的控制台并查看它匹配的元素数量......
答案 1 :(得分:8)
对于text()
方法,JQuery在复制路径处理的重复项中有不同的行为。
例如,让
<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
答案 2 :(得分:1)
对于表单元素,您应该使用val()
而不是text()
:
$("textarea.profileRightAboutMeTextarea").val(originalText)
此外,检查您是否有类profileRightAboutMeText
的元素重复。