JQuery,XML和标记名称中的句点

时间:2012-01-24 20:18:06

标签: jquery xml

我订阅了第三方网络服务,该服务返回大量记录,标签名称中包含句号。

示例:

<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

1 个答案:

答案 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() );
    }
);