从div

时间:2015-11-13 14:51:36

标签: javascript jquery

我有一个div(来自https://api.jquery.com/contents/的例子):

<div class="container">
  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed
  do eiusmod tempor incididunt ut labore et dolore magna aliqua.
  <br><br>
  Ut enim ad minim veniam, quis nostrud exercitation ullamco
  laboris nisi ut aliquip ex ea commodo consequat.
  <br><br>
  Duis aute irure dolor in reprehenderit in voluptate velit
  esse cillum dolore eu fugiat nulla pariatur.
</div>

然后我尝试从div获取所有文本,使用<p>标记格式化并剥离br标记:

  TextVar = 
  $( ".container" )
  .contents()
  .filter(function() {
     return this.nodeType === 3;
   })
  .wrap( "<p></p>" )
  .end()
  .filter( "br" )
  .remove();

但我收到错误undefined is not a function。然后我放弃.wrap("<p></p>")进行测试(请参阅此答案,例如I keep getting undefined is not a function)。但是,如果我删除wrap,代码不会抛出错误,而是只获得<br><br><br><br>。我应该如何更改我的代码以获取文本?

2 个答案:

答案 0 :(得分:1)

你可以这样做:

var _html = "<p>" + $(".container").text() + "</p>";

答案 1 :(得分:0)

一种方法是这样的:

小提琴:http://jsfiddle.net/z0wL5ckt/

var text = $(".container").text();
var paragraph = $("<p>" + text + "</p>");
$('body').append(paragraph);

更新以根据<br><br>

将文本拆分为段落

小提琴:http://jsfiddle.net/z0wL5ckt/4/

var text = $(".container").html();
var textSplit = text.split('<br><br>');
var paragraphs = '', index = 0, length = textSplit.length;
for ( ; index < length; index++) {
    paragraphs += "<p>" + textSplit[index] + "</p>";
}
$('body').append(paragraphs);
编辑:如果感兴趣,可以获得纯粹的javascript解决方案! =]

小提琴:http://jsfiddle.net/z0wL5ckt/3/

var text = document.querySelector(".container").innerHTML;
var textSplit = text.split('<br>');
var paragraphs = '', index = 0, length = textSplit.length;
for ( ; index < length; index++) {
    paragraphs += "<p>" + textSplit[index] + "</p>";
}
document.getElementsByTagName('body')[0].innerHTML += paragraphs;

更新:对于纯文本,请使用此

var text = $(".container").text();

http://api.jquery.com/text/

更新:这里只是文字,它仍然会破坏线条,但这不适用于在HTML中显示,但它会保留线条以便显示在其他位置。

小提琴:http://jsfiddle.net/z0wL5ckt/5/

var text = $(".container").html();
var textSplit = text.split('<br><br>');
var textWithBreaks = '';
var paragraphs = '', index = 0, length = textSplit.length;
for ( ; index < length; index++) {
    paragraphs += "<p>" + textSplit[index] + "</p>";
    textWithBreaks += textSplit[index] + '\n';
}
$('body').append(paragraphs);