我在客户端玩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(字符串)比较。
答案 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=""]' ) );
这是因为ID
是row
的属性。由于element是row
的迭代器,因此您希望获取它的ID
属性,如下所示:
$(element).attr( 'ID' );