JQuery中的字符串比较?

时间:2011-07-07 18:26:20

标签: jquery string whitespace

我正在研究下面提到的JQuery

jQuery("select[name='hideLineItemColumns_quote'] option:selected").each(function () {

    var columnName = $.trim($(this).text());


    $('thead.line-item-grid-header tr th').filter(function () {

        return $.trim($('div', this).text()) == columnName;
    }).hide();

});

因此,基于Select标签的选定选项,Jquery将隐藏表中的各个列。除了一个场景,当columnName =“List Price”它不起作用时,一切正常。如果我在

中特别提到“清单价格”
return $.trim($('div', this).text()) == "List Price";

它工作正常。有什么我想念的吗?

以下是选择下拉列表的html

<select name="hideLineItemColumns_quote" multiple="true" style="width:100%;" size="4" class="form-input ">
<option value="__part_desc">Description</option>
<option value="__part_number">Product</option>
<option value="_costEa_line">Cost</option>
<option value="_listPriceEach_line">List&nbsp;Price</option>
</select>

及以下是thead的代码

<thead class="line-item-grid-header">
    <tr>
        <th align="center" class="list-label ">
            <div style="overflow:hidden;width:60px;">List Price</div>
        </th>
    </tr>
</thead>

它看起来像是在firebug中显示&nbsp;的空格,而不是任何解决方法?

谢谢, Nitesh

3 个答案:

答案 0 :(得分:2)

non-breaking space(U + 00A0 Unicode,160十进制,&nbsp;)与space character(U + 0020 Unicode,32十进制)不同。好吧,它们似乎都是一个“空间”,但它们绝对是不同的角色。

一种可能的解决方法是,在检查时将非中断空格转换为简单空格:

$.trim($('div', this).text()) == columnName.replace(/\u00A0/g, ' ')

jsFiddle Demo

答案 1 :(得分:1)

您的HTML中List&nbsp;Price与代码中的“定价”不等。

答案 2 :(得分:1)

最好使用:contains()

 $("div:contains('List Price')")

另见jQuery.contains