我有一个看起来像这样的选项列表:
<select id="input_13">
<option class="level-1" value="35"> Eielson AFB</option>
<option class="level-1" value="36"> Elmendorf AFB</option>
<option class="level-1" value="37"> Fort Greely</option>
</select>
如何使用.replace移动每个选项并取出所有空格?
到目前为止,我已经尝试了这个,但是没有用:
jQuery("#input_13).each(function () {
(this).text().replace(' ','1234');
});
答案 0 :(得分:4)
试试这个:
$("#input_13").find("option").each(function (index, option) {
$(option).html($(option).html().replace(/ /g,''));
});
jsFiddler:http://jsfiddle.net/rwWv7/5/
答案 1 :(得分:2)
jQuery("#input_13")
这里的错误是你选择了select元素,所以每个元素只会循环选择。
$(this).text().replace(' ','1234');
这里的错误是你正在用1234替换它,但是没有将它分配回元素。它也只会取代第一个&amp; nbsp。 html是一个更好的选择,因为文本会将&amp; nbsp转换为空格。
正确的代码是:
$("#input_13 option").each(function () {
$(this).html($(this).html().replace(/ /g,''));
});
看起来服务器端代码正在生成&amp; nbsp。如果可能的话,最好修改服务器端代码以不生成它们,而不是使用JavaScript来删除它们。
答案 2 :(得分:1)
这应该有效:
jQuery("#input_13 option").each(function () {
$(this).text($(this).text().replace(/\u00a0/g,''));
});
请注意,它使用相当于
的unicode来替换。
答案 3 :(得分:1)
您必须使用html()
,以便
按字面意思进行操作。您还可以将函数传递给html()
,这使事情变得非常简单:
$('#input_13 option').html(function(i, html) {
return html.replace('/ /g','');
});
需要注意两点:replace
返回新字符串,您需要一个正则表达式,因为默认情况下,replace
仅替换搜索字符串的第一次出现。