JQuery выбор селектора с элементом с пространством имен

Как я могу выбрать следующее в jQuery?

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

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

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

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

Ответы

Ответ 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') );

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

Ответ 5

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

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

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

Ответ 6

Работает с webkit и другими браузерами.


$. ( '[NodeName = нс: текст]') Attr ( 'значение');

Пример:

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