这是我正在使用的功能:
function replaceH1s() {
$("h1").each(function(){
h1name = $(this).text();
stuff = h1name.toLowerCase().replace(' ','-');
$(this).html('<img src="/assets/image/h1_' + stuff + '.png" alt="' + h1name + '" />');
})
}
我一辈子都想不通为什么此函数用连字符替换h1name字符串中的第一个空格,但随后的连字符都没有。我尝试了转义和转义(然后将偶然发现的%20替换为连字符,但这样做也一样)。我尝试了用于全空白的正则表达式,并且做了同样的事情。我觉得我在这里看不到什么超级基础。
最佳答案
您需要指定一个全局正则表达式。否则,它仅与第一个匹配项匹配。
// regular expression
function replaceH1s() {
$("h1").each(function(){
h1name = $(this).text();
stuff = h1name.toLowerCase().replace(/\s+/g, '-'); // matches all whitespace
// use / /g to match a single space
$(this).html('<img src="/assets/image/h1_' + stuff + '.png" alt="' + h1name + '" />');
})
}
// firefox only
function replaceH1s() {
$("h1").each(function(){
h1name = $(this).text();
stuff = h1name.toLowerCase().replace(' ', '-', 'g');
$(this).html('<img src="/assets/image/h1_' + stuff + '.png" alt="' + h1name + '" />');
})
}