jQuery附加文本

sun*_*jie 46 html css jquery append

我想在div中添加一些简单数据,如:

$('#msg').append('Some text');
Run Code Online (Sandbox Code Playgroud)

在身体里,我想我需要把html放在一边.

<div id="test">    

<div id="msg"></div>  //show text inside it.

</div>
Run Code Online (Sandbox Code Playgroud)

但是,我想添加一些CSS #msg.例如,背景颜色.现在的问题是,由于#msgdiv始终存在,即使未附加文本,我也会看到背景颜色.我试图添加css,如"display:none,但在那种情况下,我看不到附加到它的文本.我可以这样做,以便#msgdiv #test只在文本被附加到它内部时出现吗?谢谢.

Hen*_*wan 151

附加文本的正确方法(与附加HTML相对应)将是:

var someText = "Hello, World!";
$('#msg').append(document.createTextNode(someText));
Run Code Online (Sandbox Code Playgroud)

如果someText来自用户输入或其他任何内容,它将被正确地HTML转义.哪个应该阻止JavaScript注入,这是世界上第三个最常见的Web安全漏洞.

来自/sf/answers/66111951/

  • 这应该是公认的答案.感谢您发布此以及*为什么*这是将文本安全地附加到元素的正确方法的解释. (10认同)

Nea*_*eal -17

$('#msg').append('Some text').show();
Run Code Online (Sandbox Code Playgroud)

  • 这不会附加文本,而是附加 HTML。巨大差距。 (58认同)
  • 同意@usr。如果“文本”来自用户输入,这将导致 JavaScript 注入。 (11认同)
  • `$('#msg').text( $('#msg').text() + 'Some text' )` 会更安全吗?根据 [jQuery API](http://api.jquery.com/text/#text2), `.text( [text] )` 使用 `.createTextNode()` 对文本进行转义。 (2认同)