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

时间:2010-01-12 07:49:04

标签: jquery jquery-selectors namespaces

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

<ns:text value="my value" />

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

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

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

6 个答案:

答案 0 :(得分:27)

您正在寻找:

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

价:

答案 1 :(得分:3)

看看JQuery, XML and namespaces

这个似乎应该工作:

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

答案 2 :(得分:2)

我尝试了“[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/

答案 3 :(得分:1)

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

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

(见this thread

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)

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


  

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

示例:

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