17

How would I select the following in jQuery?

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

I have tried the snippets below, but to no avail. Is this possible?

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

var x= $('text').attr('value'); 
return x;
Keavon
  • 6,837
  • 9
  • 51
  • 79
Val
  • 17,336
  • 23
  • 95
  • 144

6 Answers6

29

You're looking for:

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

Ref:

K Prime
  • 5,809
  • 1
  • 25
  • 19
3

Take a look at JQuery, XML and namespaces.

It seems that this should work:

var x = $("ns\\:text").attr("value");
cletus
  • 616,129
  • 168
  • 910
  • 942
2

I tried the "[nodeName=gd:when]" version and it worked at first - but then when I upgraded jQuery from 1.4.3 to 1.5.2 it broke. Not sure which version inbetween is the problem.

Solution was to use "gd\:when" approach - but it didn't work in Google Chrome - so I finally came up with a way that works in all the browsers I tried:

// 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" );
}

You can then use the prefix for any more namespaced elements.

See http://www.kajabity.com/index.php/2011/05/handling-xml-elements-with-namespaces-in-jquery/.

1

Use a backslash, which itself should be escaped so JavaScript doesn't eat it:

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

(as found on this thread)

Community
  • 1
  • 1
pixeline
  • 17,669
  • 12
  • 84
  • 109
0
$('ns\\\:text').attr('value')

seems to be the answer but some people have mentioned some browsers may not support it... but i don't know about that as this is a jquery library unless jquery has not implemented it then maybe that could be the case:

supported and tested on: ie8, FF 3.6, chrome 3.0 i have not tested it on other browsers because i don't have them but if anyone has the answer if it works on other browsers then please add on the comment below...

Val
  • 17,336
  • 23
  • 95
  • 144
0

Works in webkit and alle the other Browsers too


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

Example:

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