jQuery выбор селектора с элементом пространства имен - PullRequest
16 голосов
/ 12 января 2010

Как бы я выбрал следующее в jQuery?

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

Я попробовал приведенные ниже фрагменты, но безрезультатно. Возможно ли это?

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

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

Ответы [ 6 ]

27 голосов
/ 12 января 2010

Вы ищете:

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

Ref:

3 голосов
/ 12 января 2010

Взгляните на JQuery, XML и пространства имен .

Похоже, это должно работать:

var x = $("ns\\:text").attr("value");
2 голосов
/ 13 мая 2011

Я попробовал версию «[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/.

1 голос
/ 12 января 2010

Используйте обратную косую черту, которая сама должна быть экранирована, чтобы JavaScript ее не использовал:

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

(как найдено в этой теме )

0 голосов
/ 19 марта 2010

Работает в webkit и всех других браузерах


$ ( '[NODENAME = нс: текст]'). Атр ( 'значение');

Пример:

$('[nodeName=geo:lat]').attr('value');
$('[nodeName=geo:lat]').val();
0 голосов
/ 12 января 2010
$('ns\\\:text').attr('value')

кажется ответом, но некоторые люди упоминали, что некоторые браузеры могут не поддерживать его ... но я не знаю об этом, поскольку это библиотека jquery, если jquery не реализовал ее, тогда, возможно, это могло бы иметь место:

поддерживается и тестируется на: ie8, FF 3.6, chrome 3.0 я не тестировал его в других браузерах, потому что у меня их нет, но если у кого-то есть ответ, работает ли он в других браузерах, пожалуйста, добавьте комментарий ниже ...

...