3

假设我们有一个段落:

<p>txt0</p>

...我们想附加一些文本:

$("p").append("_txt1");
$("p").append("_txt2");
$("p").append("_txt3");

结果将如预期的那样:

txt0_txt1_txt2_txt3

但是,如果我们在浏览器中检查结果,它实际上是什么:

<p>
   "txt0"
   "_txt1"
   "_txt2"
   "_txt3"
</p>

有 4 种不同的字符串只呈现为一个。问题是我正在动态创建一个 Flash 对象,并且由于引号,以这种方式附加字符串将不起作用。我真的需要它是一个像这样的连续字符串:

<p>
   txt0_txt1_txt2_txt3
</p>

有没有办法以这种方式追加?或者之后删除所有引号?

PS。在您说要在附加之前制作一个大字符串之前,这是行不通的,因为字符串太大而且对于 ex。它适用于 Chrome,但不适用于 Firefox 或 IExplorer(但这是一个不同的问题)。

4

3 回答 3

1

使用text,否则您每次都附加一个新的 TextNode :

var $p = $('p');
$p.text('txt0');
$p.text($p.text() + '_txt1');

或者textContent它不那么令人困惑:

var p = $('p')[0];
p.textContent += 'txt0';
p.textContent += '_txt1';
...
于 2013-05-12T22:32:37.667 回答
1

您可以通过以下方式操作 p-tag 中的 html:

$('p').html($('p').html() + '_text');
于 2013-05-12T22:39:32.760 回答
0

我的解决方案类似于#DonnyDee's

$("p").append("_txt1");
$("p").append("_txt2");
$("p").append("_txt3");
$("p").html($("p").html()); 

不知何故.html知道如何删除有两个字符串在一起的引号,即“txt0”“_txt1”等

afaik .text() 具有破坏性,即会将 html 替换为可能不是我们想要的文本,尽管我同意这个例子就足够了。

$('p').html(function(index, oldHTML) { return oldHTML + '_text';});

看起来像一个很好的解决方案。例如

$("p").append("_txt1");
$("p").append("_txt2");
$("p").append("_txt3");
$("p").html(function(index, oldHTML) { return oldHTML); 
于 2021-08-26T13:35:14.790 回答