我有一个指向一个页面的链接列表,该页面对应于美国50个州中的每个州。
我循环遍历数组中的每个状态并为每个状态添加href但是对于包含两个单词的状态,我需要用连字符替换它们之间的空格(' '
)('-'
)。
示例:New York
必须替换为New-York
。
<a href="http://www.projectknow.com/find/New York/" class="spaces">
必须替换
<a href="http://www.projectknow.com/find/New-York/" class="spaces">
这是我到目前为止所得到的,但它不起作用。 jQuery仍然是新手,任何帮助都将不胜感激。
var option = '';
for (var i = 0; i < states.length;i++){
option += '<li><a href="http://www.states.com/find/'+ states[i] +'/"
class="spaces">'+ states[i] +'</a></li>';
}
$('.menu').append(option);
$("a.spaces").each(function (){
$(this).attr('href', $(this).attr("href").replace("","-"));
});
答案 0 :(得分:2)
请改用此代码:
$(this).attr('href', $(this).attr("href").replace(/\s/g, "-");
答案 1 :(得分:1)
也许你可以在将它添加到链接标签之前替换它,然后你不需要在添加之后处理它,就像这样:
var option = '';
for (var i = 0; i < states.length;i++){
var state = states[i].replace(/ /g, '-');
option += '<li><a href="http://www.states.com/find/'+ state +'/" class="spaces">'+ states[i] +'</a></li>';
}
答案 2 :(得分:1)
var states = [ 'New York', 'New Jersey', 'New Mexico' ];
$('.menu').append(states.map(function(state){
return '<li><a href="http://www.states.com/find/'+ state.replace(/[ ]/g, '-') +'/" class="spaces">'+ state +'</a></li>';
}).join(''));
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="menu"></ul>
&#13;
答案 3 :(得分:0)
你真是太近了!
问题:
$(this).attr('href', $(this).attr("href").replace("","-"));
因为"" != " "
答案:
$(this).attr('href', $(this).attr("href").replace(" ","-"));
但替换仅替换第一次出现。我们可以建议正则表达式,但正如你所说,你仍在努力解决问题;正则表达式会让你此时感到困惑
function replaceAll(str, find, replace) {
str = str.replace(find, replace);
if(str.indexOf(find) > -1) {
return replaceAll(str, find, replace);
}
return str;
}
然后$(this).attr('href', replaceAll($(this).attr('href'), ' ', '+'));