jQuery选择带有namespaced元素的选择器

我如何在jQuery中选择以下内容?

 

我试过下面的片段,但无济于事。 这可能吗?

 var x= $('ns:text').attr('value'); return x; 

 var x= $('text').attr('value'); return x; 

您正在寻找:

 var x= $('ns\\:text').attr('value'); return x; 

参考:

看看JQuery,XML和命名空间 。

看来这应该工作:

 var x = $("ns\\:text").attr("value"); 

我尝试了“[nodeName = gd:when]”版本并且它首先工作 – 但是当我将jQuery从1.4.3升级到1.5.2时它就破了。 不确定中间的哪个版本是问题所在。

解决方案是使用“gd \:when”方法 – 但它在Google Chrome中不起作用 – 所以我最终提出了一种适用于我尝试过的所有浏览器的方法:

 // Need to work out how to handle namespaces on some elements. var namespace = "gd\\:"; // Most prefer this... var startDateElement = $(this).find( namespace + "when" ); if( startDateElement.length == 0 ) { namespace = ""; // ...but some don't! startDateElement = $(this).find( namespace + "when" ); } 

然后,您可以将该前缀用于任何更多的命名空间元素。

请参阅http://www.kajabity.com/index.php/2011/05/handling-xml-elements-with-namespaces-in-jquery/ 。

使用反斜杠,它本身应该被转义,因此JavaScript不会吃它:

  alert($('ns\\:text').attr('value') ); 

(如在此主题中找到的)

 $('ns\\\:text').attr('value') 

似乎是答案,但有些人提到一些浏览器可能不支持它…但我不知道,因为这是一个jquery库,除非jquery没有实现它,那么可能是这样的情况:

支持和测试:ie8,FF 3.6,chrome 3.0我还没有在其他浏览器上测试它,因为我没有它们,但如果有人有答案,如果它适用于其他浏览器那么请添加下面的评论…

适用于webkit,也适用于其他浏览器

$( ‘[节点名称= NS:文本]’)ATTR( ‘值’);

例:

 $('[nodeName=geo:lat]').attr('value'); $('[nodeName=geo:lat]').val();