jQuery选择带有命名空间元素的选择器

Posted

技术标签:

【中文标题】jQuery选择带有命名空间元素的选择器【英文标题】:jQuery selecting a selector with namespaced element 【发布时间】:2011-01-04 02:01:24 【问题描述】:

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

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

我尝试了下面的sn-ps,但无济于事。这可能吗?

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

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

【问题讨论】:

【参考方案1】:

您正在寻找:

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

参考:

http://docs.jquery.com/Selectors#Special_characters_in_selectors

【讨论】:

两次转义和三次转义有什么区别? 有 3 个转义,jquery 将寻找 ns\:text 而不是 ns:text 两者都有效...所以我认为它们都是正确的,对吧? 恰好3个斜线起作用,因为\:没有特殊含义。相比之下,'\\n' 将是一个 2 字符的字符串,而 '\\\n' 将是换行符【参考方案2】:

看看JQuery, XML and namespaces。

看来这个应该工作:

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

【讨论】:

哎呀,你之前在我输入答案时发布了它,但得到了我的投票:)【参考方案3】:

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

【讨论】:

【参考方案4】:

使用反斜杠,它本身应该被转义,这样 javascript 就不会吃掉它:

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

(在 this thread 上找到)

【讨论】:

【参考方案5】:
$('ns\\\:text').attr('value')

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

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

【讨论】:

【参考方案6】:

适用于 webkit 和所有其他浏览器

$('[nodeName=ns:text]').attr('value');

例子:

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

【讨论】:

以上是关于jQuery选择带有命名空间元素的选择器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CSS 选择器或 jQuery 中处理 XML 命名空间?

使用 jQuery $().find 解析带有命名空间的 XML

具有命名空间的元素的 xpath 选择

C++ 命名空间中派生类中的 Qt 样式表(选择器)

jQuery 命名空间的使用

jquery-$()函数的用法及一些常用的选择器