切片文本在两个不破坏jQuery中的标签

时间:2014-01-18 13:35:03

标签: javascript jquery

我有以下代码,我设法通过组合不同的资源。这样做的是它需要内容的html并将其分成两半(对于更多的应用程序)。以下代码是这样的,它不会破坏一个单词(等到单词的结尾)。

var minCharCount = 600;
var divcontent = $('#myDiv').html();

var firstHalf = divcontent.substr(0, minCharCount);
firstHalf = firstHalf.substr(0, Math.min(firstHalf.length, firstHalf.lastIndexOf(" ")));

var secondHalf = divcontent.substr(firstHalf.length, divcontent.length);

但是,最后一个问题是它可能会破坏html标记导致代码错误。有没有办法确保代码在任何潜在的标签结束后将它们分成两部分?

编辑:可能有点难以理解。我想要的是:

long text comes here with tags like <b>bold</b> or even <i>italic</i>.
                              ^1         ^2    ^3

所以我的观点是,如果我们在1处罚款,但如果我们在2处突破并将这两部分追加到某处,我们就会遇到问题。所以在打破2之前,我们需要检查它是否在标签的中间。如果是,则等待标签结束然后中断:即3

1 个答案:

答案 0 :(得分:0)

WORKING DEMO

而不是

 $('#myDiv').html();

对从

返回的字符串运行该函数
  $('#myDiv').text();

这样你就不会在输入字符串中得到任何html标签。

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

更新: (回应评论)

因为你需要html标签,所以你可以循环遍历目标的children(),测量它们的.text()的长度,并将它们添加到输出,直到你达到minChars数量。然后对您到达的最后一个孩子执行相同的操作,直到达到最接近目标字符数的文本量。

children()排除文本节点,因此您必须使用contents()。 但是,这种方法很麻烦。我认为你最好的办法是创建一个范围对象 见这里:https://developer.mozilla.org/en-US/docs/Web/API/Document.createRange