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();