我订阅了第三方网络服务,该服务返回大量记录,标签名称中包含句号。
示例:
<row rownumber="1">
<a.FirstName>John</a.FirstName>
<a.LastName>Smith</a.LastName>
</row>
<row rownumber="2">
<a.FirstName>Jane</a.FirstName>
<a.LastName>Doe</a.LastName>
</row>
我正在使用JQuery来查看记录,而且工作得很好。
我可以从元素中获取当前行号,并循环遍历所有2,000条记录。
但是,我不能做的是获取标签内的值。
$(xml).find('row').each(
function(){
alert( $(this).attr('rownumber') ); //WORKS GREAT!
//but
alert( $(this).find('a.FirstName').text() ); //does not work
}
);
有什么想法吗?
谢谢, d
答案 0 :(得分:5)
问题是您使用a.FirstName
的选择器将被解释为带有FirstName类的achor-tag。如果标记名称中有特殊字符(如点),则必须在选择器中使用两个反斜杠转义.
。
jQuery documentation on selectors说明以下内容:
如果您想使用任何元字符(例如 !“#$%&amp;'()* +,。/:;&lt; =&gt;?@ [] ^`{|}〜)作为名称的字面部分,你必须 用两个反斜杠转义字符:\。例如,如果你 有一个id =“foo.bar”的元素,你可以使用选择器 $( “#FOO \的.bar”)。
请改为尝试:
$(xml).find('row').each(
function(){
alert( $(this).find('a\\.FirstName').text() );
}
);