代码之家  ›  专栏  ›  技术社区  ›  Val

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

  •  15
  • Val  · 技术社区  · 15 年前

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

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

    我试过下面的片段,但没有用。这有可能吗?

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

    var x= $('text').attr('value'); 
    return x;
    
    6 回复  |  直到 10 年前
        1
  •  26
  •   K Prime    15 年前

    你在找:

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

    裁判:

        2
  •  3
  •   cletus    15 年前

    看一看 JQuery, XML and namespaces .

    好像这个 应该 工作:

    var x = $("ns\\:text").attr("value");
    
        3
  •  2
  •   Simon Williams    13 年前

    我尝试了“[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
  •  1
  •   Community Lee Campbell    7 年前

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

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

    (如在 this thread )

        5
  •  0
  •   Val    15 年前
    $('ns\\\:text').attr('value')
    

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

    支持并测试:IE8、FF 3.6、Chrome 3.0 我没有在其他浏览器上测试它,因为我没有,但是如果有人有答案,如果它在其他浏览器上工作,请在下面的评论中添加…

        6
  •  0
  •   simon    14 年前

    在webkit和其他浏览器中也可以使用


    $('[nodename=ns:text]).attr(“value”);

    例子:

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