创建字符串后,我试图“突出显示”字符串中的特定单词。
我目前正在这样做:
var keywords = [
"Monday",
"monday",
"Tuesday",
"tuesday",
"Wednesday",
"wednesday",
"Thursday",
"thursday",
"Friday",
"friday",
"Saturday",
"saturday",
"Sunday",
"sunday"
];
function highlightImportant(that) {
that.find('.email-container').each(function(){
var full_text = $(this).text();
$.each(keywords, function(i){
full_text = full_text.replace(keywords[i], "<b>"+keywords[i]+"</b>");
$(this).text(full_text);
});
});
}
此函数在此结尾处调用:
function getEmails(email, name) {
console.log("working...");
$('.contact--details__show__emails').empty();
$.post('php/contacts-get-email.php', {email:email}, function(data) {
var email_body = data.split("<:>");
$.each(email_body.reverse(), function(i){
if(email_body[i]) {
var direction = email_body[i].split(':dir:')[0];
var email_text = email_body[i].split(':dir:')[1].split(':date:')[0];
var email_date = email_body[i].split(':dir:')[1].split(':date:')[1];
var d = new Date(0);
d.setUTCSeconds(email_date);
if(direction === "TO"){
var initial = "Us";
} else {
var initial = name;
}
var email_block = $('<div class="emailBlock dir-'+direction+'" style="opacity:0;">\
<div class="avatar">'+ initial +'</div>\
<div class="email-container">'+email_text+'</div>\
<div class="date">'+d+'</div>\
</div>');
$('.contact--details__show__emails').append(email_block);
email_block.delay(100*i).animate({"opacity":"1"}, 500);
highlightImportant($('.contact--details__show__emails'));
}
});
});
}
这似乎应该正常工作,当我进行console.log
该事件时,我看到它遍历每个容器的每个关键字,但似乎即使它们存在,也找不到关键字。
我想看到的是当我有这样的字符串时发生的情况:
var string = "Let's meet Monday or Tuesday";
我想让它们变粗体,如下所示:
“我们星期一或星期二见面”
有什么想法吗?
您在此行中有两个错误:
$(this).text(full_text);
1)this
指向字符串而不是DOM元素; 2)html()
如果要将标记放入元素,则应使用method。
并且String.replace()
您使用的表格将仅替换第一个条目,因此您应该这样做:
that.find('.email-container').each(function(){
var full_text = $(this).text();
$.each(keywords, function(i) {
full_text = full_text.replace(new RegExp(keywords[i],"gi"), "<b>"+keywords[i]+"</b>");
});
$(this).html(full_text);
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句