使用jQuery我需要用连字符

时间:2017-06-07 00:07:00

标签: javascript jquery

我有一个指向一个页面的链接列表,该页面对应于美国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("","-"));
});

4 个答案:

答案 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)

&#13;
&#13;
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;
&#13;
&#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'), ' ', '+'));