我想找到内容的中点,并在<br>
代码或</p>
代码后面插入一段HTML代码,这样句子就不会被分割。
我可以找到内容的中间点,但我不确定如何找到最接近的<br>
代码或</p>
代码并插入HTML代码。
这是我到目前为止的代码。 JS Fiddle (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");
});
答案 0 :(得分:3)
我会假设你不是那个控制内容的人,或者它是p标签而不是它们并打破了所有混合。这将搜索内容中的p和br,计算它们,并将广告放在其组合长度的中点之后。
var content = $('.content').find('p, br');
var midLength = parseInt(content.length/2);
content.eq(midLength).after("Ad Codes Come Here");
答案 1 :(得分: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;
}
});
答案 2 :(得分:1)
将您的内容分为两部分:
第一个从0到中间。 第二个从中到中
然后在第二个字符串中找到<br>
标记的第一个位置。如果这足够,那么你已经完成了。
否则,如果你想从两边找到最近的<br>
,那么也要搜索<br>
在第一个字符串中的位置,但这次是最后一个而不是第一个字符串。比较第二部分中0和<br>
之间的距离,以及第一部分中<br>
位置的字符串长度。较小的意味着更接近,然后在br
的位置添加你想要的任何东西(如果你想在它之后插入你的元素,则为+它的长度)
答案 3 :(得分: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>");
});