是否可以使用 jQuery 在特定字符串之前添加 HTML 元素?例如,如果我有:
<h4>Men's Basketball vs. Georgetown</h4>
我想做到:
<h4>Men's Basketball <span class="team">vs. Georgetown</span></h4>
我可以用 jQuery 做到这一点吗?我尝试使用各种选项(:contains、prepend()、html()、pop() 等。但它们似乎都不能完全正确地工作。
你可以这样做:
var h4 = $('h4');
var str = 'vs. Georgetown';
h4.html(h4.text().replace(str, '<span class="team">'+str+'</span>'));
假设您想在所有元素中换vs
行并结束文本,那么您可能会这样做h4
$('h4').each(function(){
var bip = $(this).text().split(/(?<vs)/);
if (!bip.length) return;
$(this).html(bip[0]+'<span class="team">'+bip[1]+'</span>');
});
假设对于每个h4
您想要的vs.
以及随后的内容都包裹在一个跨度中,那么您应该遍历每一个,确定vs.
字符串中的位置,然后将其包裹在一个跨度中。
html:<h4>Men's Basketball vs. Georgetown</h4>
CSS:.team{ color: red; }
js:
$("h4").each(function(){
var v = 'vs.',t = $(this), prefix, suffix;
if(t.text().indexOf(v) > -1 ){
prefix = t.text().substr(0,t.text().indexOf(v));
prefix += "<span class='team'>";
suffix = t.text().substr(t.text().indexOf(v));
suffix += "</span>";
t.html(prefix+suffix);
}
});
如果我是你,我会给 h4 一个 id。
$(document).ready(function(){
var text = $('h4').html().split('vs.');
$('h4').html(function(){
return text[0] + '<span class="team"> vs. '+ text[1] +'</span>';
});
});
或者,如果你有一个 ID。让我们说Id1。
$(document).ready(function(){
var text = $('#Id1').html().split('vs.');
$('#Id1').html(function(){
return text[0] + '<span class="team"> vs. '+ text[1] +'</span>';
});
});
我会做...
var str = $('h4').split('vs.'); // team name
$('h4').html(function(){
return str[0] + 'vs. <span class="team"> '+ str[1] +'</span>';
});
与之前的答案相比,这似乎更像是一个动态解决方案。