一起使用jQuery .append和.html

时间:2013-11-23 01:55:32

标签: javascript jquery

我必须动态地将内容添加到我的CMS在其论坛模块中生成的iFrame中。我无法控制HTML。我正在动态添加内容并尝试找到最佳解决方案。

以下是我正在使用的代码:

HTML

<iframe id="re_contentIframe">
 <html>
  <body>
   <p>Forum content is typed here.</p>
   <p>More forum content.</p>
    Forum Signature
  </body>
 </html>
</iframe>

JS

nestedFrame = myFrame.find('#re_contentIframe').contents().find('body');
nestedFrame.append("Dynamic content" + data); //this is what is inserted dynamically. 

这是我遇到的问题。因为我无法控制我的CMS生成的iFrame的代码,因此当我使用上面的代码时,我最终得到类似的内容:

Forum Signature Dynamic content...

我希望将动态内容添加到下面 Forum Signature。然后我厌倦了这个:

nestedFrame.html("Dynamic content" + data); //this is what is inserted dynamically. 

当我这样做时,论坛内容会被.html

删除

然后我尝试了这个:

nestedFrame.append(" <br> Dynamic content" + data);

当我这样做时会打印<br>

这是我的问题:

有没有办法将html附加到目标而不擦除那里的html?我无法想办法做到这一点。

2 个答案:

答案 0 :(得分:1)

jQuery.parseHTML(str)将传递的字符串转换为实际的html内容(包括textNodes),而只调用$(str)将只返回字符串中的元素。

所以

$(" <br> Dynamic content" + data) //=> <br>

$.parseHTML(" <br> Dynamic content" + data) // textNode + <br> + textNode

当您附加字符串时,正如我在评论中提到的那样,您也可以使用insertAdjacentHTML

nestedFrame[0].insertAdjacentHTML(" <br> Dynamic content" + data);应该与nestedFrame.append($.parseHTML(" <br> Dynamic content" + data));

相同

答案 1 :(得分:0)

有几个选项

  1. 您可以创建元素 - &gt; var br = document.createElement('br');并追加他们
  2. 在里面使用'<br>',在其间使用+ +,而不是100%确定该方法。
  3. 您可以结帐j Query after,这个问题的精彩解决方案。
  4. 古德勒克。