Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 给定一个ID,查找最后一句,并用span包装器替换它_Javascript_Jquery_Regex_Html - Fatal编程技术网

Javascript 给定一个ID,查找最后一句,并用span包装器替换它

Javascript 给定一个ID,查找最后一句,并用span包装器替换它,javascript,jquery,regex,html,Javascript,Jquery,Regex,Html,鉴于以下情况: <div id="bigchuck"> <p>blah blah blah.</p> <p>yada yada yada.</p> <p>Tada. Bing bong the witch is dead. Door bell.</p> </div> 废话废话 雅达雅达雅达 塔达。女巫冰奉死了。门铃 JavaScript/JQUERY如何找到最后一句话“Door bell”

鉴于以下情况:

<div id="bigchuck">
 <p>blah blah blah.</p>
 <p>yada yada yada.</p>
 <p>Tada. Bing bong the witch is dead. Door bell.</p>
</div>

废话废话

雅达雅达雅达

塔达。女巫冰奉死了。门铃

JavaScript/JQUERY如何找到最后一句话“Door bell”并用标记将其包装起来,从而产生:

<div id="bigchuck">
 <p>blah blah blah.</p>
 <p>yada yada yada.</p>
 <p>Tada. Bing bong the witch is dead. <span>Door bell.</span></p>
</div>

废话废话

雅达雅达雅达

塔达。女巫冰奉死了。门铃

谢谢

试试这个:

var plast = $("#bigchuck").find("p:last").text();

var part = plast.split("."), pos = part.length - 2;
if (part.length < 2)
  pos = 0;

part[pos] = "<span>" + part[pos] + ".</span>";
part.pop(); // <-edit for comment

$("#bigchuck").find("p:last").html(part.join("."));
var plast=$(“#bigcuck”).find(“p:last”).text();
var part=塑性劈裂(“.”),pos=part.length-2;
如果(零件长度<2)
pos=0;
零件[pos]=“零件[pos]+”;

part.pop();// 试试这个:

$('bigcuck p:last').html(函数(i,html){
var arr=html.split(/(\)/);
排列拼接(排列长度-3,0,);
方位推力(“”)
返回arr.join(“”);
});

此解决方案基于patrick的解决方案(他提出了
函数(i,html)
方法,这值得称赞),但它只是包装了最后一句话,而不是前面的空白:

$('#bigchuck p:last').html( function(i,html) {
  var arr = html.split(". ");
  arr[arr.length-1]="<span>"+arr[arr.length-1]+"</span>";
  return arr.join(". ");
});
$('bigcuck p:last').html(函数(i,html){
var arr=html.split(“.”);
arr[arr.length-1]=“”+arr[arr.length-1]+“”;
返回arr.join(“.”);
});

这是。

如果您只想更改“门铃”区域。你可以放置一个带有指定id的特殊标记,然后你可以对IdIt进行操作。它将是动态的,因为用户正在键入,他们可以触发这个函数,所以我没有ID@patrick-我希望你不介意我添加第二个版本。它将只包装文本,而不是最后一句中第一个单词前面的空格。@Gert-这是一个很好的解决方案。你应该继续,把它作为一个答案。我会投赞成票的o) @Gert-你真是太客气了,考虑周到了,但是这个解决方案非常独特,真的是你的。我在上一个
问题上陷入了困境。你的解决得很好。我打算把我的话退回去,希望很快能看到你的答案o) 你可以注意到,如果你愿意,它是从我的基础上建立起来的。@patrick-谢谢。:)但我仍然认为,您提出了
函数(I,html)
方法,这值得我们的支持。我的第一个解决方案更加夸张。@Gert-是的,传递函数是对jQuery1.4的一个很好的补充。您的解决方案的优点是,它在最后一次
时没有分裂,这让我很难过。我甚至没想到要在里面加个地方。完美地解决了这个问题并简化了代码。Gert+1非常好。使用
.html(function(){})
只是一种快捷方式。重要的是功能的本质。我更喜欢你的解决方案o) 谢谢你(帕特里克)我从你那里学到了一种新方法。我想这就是这样的美。你每天都能学到新东西格特——的确如此。我在这里学到了jQuery的大部分知识。@patrick-这里也是。今天早些时候,我看了Scott Hanselman的《开发者社交网络》(Social Networking for Developers)()。他谈到了乔恩·斯基特以及每个人在生活中至少需要三个地方。他还谈到,与旧论坛相比,这是一个怎样的飞跃,在旧论坛中,你必须翻阅所有帖子才能找到答案。抱歉离题了,但这是一个很好的视频,他所说的非常真实。格特-酷。谢谢你的链接。我一定会查出来的。最后你会得到一个额外的
。我最初也有同样的问题,因为最后的
超出了范围。
$('#bigchuck p:last').html( function(i,html) {
  var arr = html.split(". ");
  arr[arr.length-1]="<span>"+arr[arr.length-1]+"</span>";
  return arr.join(". ");
});