【问题标题】:jQuery selecting a selector with namespaced elementjQuery选择带有命名空间元素的选择器
【发布时间】: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;

【问题讨论】:

    标签: jquery jquery-selectors namespaces


    【解决方案1】:

    您正在寻找:

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

    参考:

    【讨论】:

    • 两次转义和三次转义有什么区别?
    • 有 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();
          

          【讨论】:

            猜你喜欢
            • 2016-07-16
            • 2010-10-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-11
            相关资源
            最近更新 更多