0

我想找到内容的中点并在<br>标签或</p>标签之后插入一段 HTML 代码,这样句子就不会被拆分。

我可以找到内容的中间点,但我不确定如何找到最接近的<br>标签或</p>标签并插入 HTML 代码。

这是我到目前为止的代码。JS 小提琴http://jsfiddle.net/sunflowersh/BHHFZ/

jQuery

$(document).ready(function(){
var content = $(".content");

var contentLength = $('.content').text().length;

var midLength = parseInt(contentLength / 2);

midLength.closest("<br>, </p>, <br/>").append("Ad Codes Come Here");

});
4

4 回答 4

4

我会假设您不是控制内容的人,或者它将是 p 标签而不是它们,并且将所有内容混合在一起。这将在内容中搜索 p 和 br,对其进行计数,并将广告放置在它们组合长度的中点之后。

var content = $('.content').find('p, br');
var midLength = parseInt(content.length/2);
content.eq(midLength).after("Ad Codes Come Here");

在这里小提琴:http: //jsfiddle.net/filever10/BHHFZ/20/

于 2013-10-24T17:17:18.553 回答
2

如果您可以修改源<p>代码以对每个段落使用标签,而不是有时使用<br>

content.children().each(function(){
    var $this = $(this);

    contLength += $this.text().length;

    if(contLength >= midLength){
         $this.after("<div class='added'>EXTRA STUFF ADDED HERE</div>");   
         return false;
    }
});

http://jsfiddle.net/BHHFZ/13/

于 2013-10-24T17:12:49.420 回答
1

将您的内容分成两部分:

第一个从 0 到中间。从中间到最后第二个

然后<br>在第二个字符串中找到标签的第一个位置。如果这足够了,那么你就完成了。

否则,如果你想<br>从两边找到最近的,那么也要搜索<br>第一个字符串中的位置,但这次是最后一个而不是第一个。比较 0 和<br>第二部分中的距离 / 以及字符串的长度与<br>第一部分中的位置。越小意味着越接近,然后在br(+如果你想在它之后插入你的元素,它的长度)的位置添加你想要的任何东西

于 2013-10-24T17:15:58.510 回答
1

如果您不介意将文本分成几段,您可以这样做:

$(document).ready(function(){
    var content = $(".content");
    insertAt = content.children('p') === 0 ? 0 : Math.ceil(content.children('p').length / 2);
    content.children('p').eq(insertAt).before("<p style='color: red'>mid-point</p>");
});

演示:http: //jsfiddle.net/HHeLw/2/

于 2013-10-24T17:18:39.810 回答