jQuery .text()显示双重文本

时间:2012-09-03 11:39:36

标签: javascript jquery html

发生了奇怪的情况。我有<h3>的文字。当我使用.text()提取此文本然后将其放入<textarea>时,文本会出现两次。

Here is 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>都会将文字双重显示如下:

Heya,这就是全文.Heya,这就是全文。

3 个答案:

答案 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的元素重复。