jquery中的字符串比较find()不使用<

时间:2014-05-28 19:28:58

标签: javascript jquery jquery-selectors

我在客户端玩xml。下面是我的XML。

<ItemList>
    <Row ID="" Name="-- Select a Item --" GrpID="" Flag=""/>
    <Row ID="S5"  Name="Item 1" GrpID="G7" Flag="0"/>
    <Row ID="S6"  Name="Item 2" GrpID="G7" Flag="0"/>
    <Row ID="S7"  Name="Item 3" GrpID="G7" Flag="0"/>
    <Row ID="S85" Name="Item 4" GrpID="G7" Flag="0"/>
    <Row ID="S5"  Name="Item 11" GrpID="G4" Flag="0"/>
    <Row ID="S13" Name="Item 5" GrpID="G7" Flag="0"/>
    <Row ID="S14" Name="Item 6" GrpID="G7" Flag="0"/>
    <Row ID="S15" Name="Item 7" GrpID="G7" Flag="0"/>
    <Row ID="S16" Name="Item 8" GrpID="G7" Flag="0"/>
    <Row ID="S17" Name="Item 9" GrpID="G7" Flag="0"/>
    <Row ID="S12" Name="Item 12" GrpID="G4" Flag="0"/>
    <Row ID="S22" Name="Item 22" GrpID="" Flag="0"/>
    <Row ID="S25" Name="Item 26" GrpID="" Flag="0"/>
</ItemList>

我必须分配项目(GrpID = G7和ID&lt;&#39; S5&#39;)或(GrpID是&#39;&#39;)

$(xmlItems).find("Row[GrpID='7'][ID<'S82'],[GrpID='']")

我在哪里做错了。我可以使用下面的内容。

$(xmlItems).find("Row[GrpID='7'][ID='S85'],[GrpID='']")

问题&#34; =&#34;正在工作,&#34;&lt;&#34;不适用于Item ID(字符串)比较。

2 个答案:

答案 0 :(得分:1)

Jquery使用CSS选择器;语法不支持与<>匹配。您需要使用jQuery.filter()执行此操作,例如:

$filtered = $(xmlItems).find("Row[GrpID='G7']").filter(
    function (index, element) {
        return element.ID < 'S5';
    }
);

但请注意,字符串比较仍然可能不符合您的意思 - 这不是数字比较,'S11'&lt; 'S2'是真的。

答案 1 :(得分:0)

应该稍微调整@AnttiHaapala中的return语句,以使代码生效。请参阅下面的修改版本:

$filtered = $(xmlItems).find("Row[GrpID='G7']").filter(
    function (index, element) {
        return $(element).attr('ID') < 'S5';
    }
)
.add( $(xmlItems).find( 'row[GrpID=""]' ) );

这是因为IDrow的属性。由于element是row的迭代器,因此您希望获取它的ID属性,如下所示:

$(element).attr( 'ID' );