搜索术语,把它包装成标签
我有一些文字,我保存在变量$target
:搜索术语,把它包装成<span>标签
var $target = jQuery(this).text();
而且文本可以是这样的:
Hello world, attack on titan 進撃の巨人 is amazing!
然后,我有可变$term
通过:
var $term = jQuery(this).prev().text();
它可以包含类似于:
attack on titan
在一个名为$result
新的变量,我想搜索$target
为$term
的内容和换行到<span>
标签。因此,在这个例子中,$result
将是:
var $result = 'Hello world, <span>attack on titan</span> 進撃の巨人 is amazing!';
一个相对简单的要求,但我的目标是表现在这里。什么是最好的方法?
这是一个比较简单的方法是:
var $target = "Hello world, attack on titan 進撃の巨人 is amazing!";
var $term = "attack on titan";
var $result;
$result = $target.replace($term, "<span>"+$term+"</span>");
console.log($result); // => Hello world, <span>attack on titan</span> 進撃の巨人 is amazing!
我们要做的就是更换我们正在寻找target
与term
包裹在<span></span>
的term
。
此外,如果你做一次这个更多的规划,我建议你简化流程,使之成为功能:
var wrapInSpan = function(target, term){
return target.replace(term, "<span>"+term+"</span>");
}
$result = wrapInSpan($target, $term);
console.log($result); // => Hello world, <span>attack on titan</span> 進撃の巨人 is amazing!
注:
它通常被称为bad practice to altar the prototype
of a native object ,就像@迈克尔的解决方案。如果你想让解决方案更加模块化,我建议将它制作成像我的解决方案一样的独立功能,而不是篡改String
对象。
这是可爱的尼克。跟这个一起去!谢谢! –
@HenrikPetterson很高兴能帮到你! –
var target="Hello world, attack on titan 進撃の巨人 is amazing!";
var term="attack on titan";
var result=target.replace(term,"<span>"+term+"</span>");
你可以尝试使用.indexOf方法来搜索目标$内,$任期。
var $target = "this is some cool text";
var $term = "cool";
var $result;
if($target.indexOf($term) != -1) {
$result = $target.replace($term, "<span>"+$term+"</span>");
}
else {
alert('Not there')
}
一旦有资格获得高质量的工作解决方案,我将获得50分的奖励。 –
下面是一个实际的HTML工作示例https://jsbin.com/nayedo/edit?html,css,js,output – kevinkl3