所以使用jQuery,我正在尝试使用数组使用数组搜索段落元素,当它找到某些单词时,它会将该单词转换为该类的链接。
我正在尝试使用它:
jQuery('.story').html(function(i,html) {
var w = ['ocean','waves','bed', 'swimming'];
$.each(w,function(i,w) {
html = html.replace(new RegExp('<a href="" class="' + w + '">' + w + '</a>', 'g'),w[i]);
});
return html;
});
最终结果会将ocean
变为<a href="" class="ocean">ocean</a>
等。
但它似乎没有起作用。我也不明白为什么。提前谢谢。
m(_ _)m
_ | 70
(最终的计划是让那些单词在按下时播放某些SFX并且我基于课程,所以当这个单词在故事中再次出现时它会播放相同的声音)。
答案 0 :(得分:2)
喜欢这个吗?
var w = ['ocean','waves','bed', 'swimming'],
reg = new RegExp('(' + w.join('|') + ')','g');
jQuery('.story').html(function(_, curHtml) {
return curHtml.replace(reg,"<a href='#' class='$1'>$1</a>");
});
<强> Demo 强>
您需要使用html
而不是val
并根据所有单词构造正则表达式,以便可以立即匹配它们并将匹配的值替换为字符串并使用匹配标记, $ 1
答案 1 :(得分:1)
您的代码存在一些问题:
i
和w
两次。他们互相覆盖。虽然这没有什么区别.val
代替.html
。 .val
只应用于表单字段。 试试这个:
jQuery('.story').html(function(i,val) {
var w = ['ocean','waves','bed', 'swimming'];
$.each(w, function(j,w) {
val = val.replace(new RegExp(w, 'g'), '<a href="" class="' + w + '">' + w + '</a>');
});
return val;
});
作为一个额外的评论:如果数组中的一个单词是另一个单词的子字符串,那么按照你设置的方式进行操作会让你遇到麻烦。当心这个。
答案 2 :(得分:1)
怎么样?
var arr = ['ocean','waves','bed', 'swimming'];
var result = $('.story').text();
$.each(arr, function (i, val) {
result =
result.replace(val, '<a href="" class="' + val + '">' + val + '</a>');
});
$('.story').html(result);
答案 3 :(得分:0)
var w = ['ocean','waves','bed', 'swimming'];
$.each(w,function(i,w) {
jQuery('.story').html(function(i,val) {
val = val.replace(w,'<a href="" class="' + w + '">' + w + '<\/a>');
return val;
});
});
JS FIDDLE: http://jsfiddle.net/8XWf3/22/