如何使用jquery选择元素后面的文本?

如何使用jquery选择元素后面的文本?,jquery,Jquery,我有一段话: <p>red orange yellow green blue indigo violet</p> 红橙黄绿蓝靛紫 我需要将结束文本包装成我可以在单击时隐藏/显示的内容,如下所示: <p>red orange yellow green <a href="#">...Show More</a> <span="unhideme">blue indigo violet</span> <

我有一段话:

<p>red orange yellow green blue indigo violet</p>
红橙黄绿蓝靛紫

我需要将结束文本包装成我可以在单击时隐藏/显示的内容,如下所示:

<p>red orange yellow green 
  <a href="#">...Show More</a>
  <span="unhideme">blue indigo violet</span>
</p>
红橙黄绿
蓝靛紫

这就是我取得的成绩:

<p>red orange yellow green 
  <a href="#">...Show More</a> 
  blue indigo violet
</p>
红橙黄绿
蓝靛紫

有没有办法用jquery说“选择标记后面的所有文本并将其包装成一个span”?或者使用jquery生成“阅读更多”按钮的其他解决方案?

这可能是一个开始:

$('p')。每个(函数(){
var$p=$(本);
var words=$p.html().split(“”);
$p.html(“”);
对于(变量i=0;i<3;i++){
$p.append(字[i]+'');
}
如果(字数长度>3){
var htmlStr='';
for(var i=3;i
3
是硬编码的,因此您可能需要更改它。它基本上表示要显示多少项


如果您想要一个插件为您完成所有繁琐的工作,请查看jquery。

只需解析p标记的HTML即可。从获取所有内容开始,然后将其分解,然后在将其再次转换为HTML之前,只需附加a和span标记

var allText = $("p").html();
var firstHalf = allText.substring(0,INDEX AT WHICH YOU WOULD LIKE TO STOP);
var secondHalf = allText.substring(INDEX AT WHICH YOU WOULD LIKE TO STOP+1);
var newHTML = firstHalf + '<a href="#">...Show More</a><span class="unhideme">' + secondhalf + "</span>";

$("p").html(newHTML);
var allText=$(“p”).html();
var firstHalf=allText.substring(0,您希望停止的索引);
var secondHalf=allText.substring(要停止的索引+1);
var newHTML=firstHalf+''+secondhalf+'';
$(“p”).html(newHTML);

首先,是什么阻止您将文本包装在一个范围内?向我们展示JS,这样我们就可以看到您是如何动态创建这些内容的,以及您是如何添加标记的。您是如何动态创建这些内容的?是的,它们是动态创建的。我使用的是cms(modx),所以基本上,客户端会将他们的段落粘贴到cms中,一旦内容过长,我需要创建一些“阅读更多”功能。我正在使用modx东西在一定数量的字符后添加a标记。看起来您正在尝试以下顺序:1)查找段落2)在x单词后添加锚点3)将剩余部分包装成一个跨度。也许最好换个说法:1)找到段落2)在x单词后拆分文本3)将第二部分用span换行4)在新spanOoo之前添加锚点这看起来会奏效!但是,“您希望停止的索引”指的是什么?我应该在那里放什么?这是你想显示的字符数。在你输入的整数之后的任何一个将被输入到“阅读更多”部分@肖纳
var allText = $("p").html();
var firstHalf = allText.substring(0,INDEX AT WHICH YOU WOULD LIKE TO STOP);
var secondHalf = allText.substring(INDEX AT WHICH YOU WOULD LIKE TO STOP+1);
var newHTML = firstHalf + '<a href="#">...Show More</a><span class="unhideme">' + secondhalf + "</span>";

$("p").html(newHTML);