如何使用jQuery从每个选择选项中删除文本

时间:2011-07-07 21:32:51

标签: jquery replace

我有一个看起来像这样的选项列表:

<select id="input_13">
        <option class="level-1" value="35">&nbsp;&nbsp;&nbsp;Eielson AFB</option> 
    <option class="level-1" value="36">&nbsp;&nbsp;&nbsp;Elmendorf AFB</option> 
    <option class="level-1" value="37">&nbsp;&nbsp;&nbsp;Fort Greely</option> 
</select>

如何使用.replace移动每个选项并取出所有空格?

到目前为止,我已经尝试了这个,但是没有用:

jQuery("#input_13).each(function () {
            (this).text().replace('&nbsp','1234');
});

4 个答案:

答案 0 :(得分:4)

试试这个:

 $("#input_13").find("option").each(function (index, option) {
        $(option).html($(option).html().replace(/&nbsp;/g,''));
 });

jsFiddler:http://jsfiddle.net/rwWv7/5/

答案 1 :(得分:2)

jQuery("#input_13")

这里的错误是你选择了select元素,所以每个元素只会循环选择。

$(this).text().replace('&nbsp','1234');

这里的错误是你正在用1234替换它,但是没有将它分配回元素。它也只会取代第一个&amp; nbsp。 html是一个更好的选择,因为文本会将&amp; nbsp转换为空格。

正确的代码是:

$("#input_13 option").each(function () {
    $(this).html($(this).html().replace(/&nbsp;/g,''));
});

看起来服务器端代码正在生成&amp; nbsp。如果可能的话,最好修改服务器端代码以不生成它们,而不是使用JavaScript来删除它们。

答案 2 :(得分:1)

这应该有效:

jQuery("#input_13 option").each(function () {
    $(this).text($(this).text().replace(/\u00a0/g,''));
});

请注意,它使用相当于&nbsp;的unicode来替换。

小提琴:http://jsfiddle.net/bjorn/2Rfmw/14/

答案 3 :(得分:1)

您必须使用html(),以便&nbsp;按字面意思进行操作。您还可以将函数传递给html(),这使事情变得非常简单:

$('#input_13 option').html(function(i, html) {
    return html.replace('/&nbsp;/g','');
});

需要注意两点:replace 返回新字符串,您需要一个正则表达式,因为默认情况下,replace仅替换搜索字符串的第一次出现。