Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не работает селектор в Chrome (https://javascript.ru/forum/jquery/42493-ne-rabotaet-selektor-v-chrome.html)

tzarek 29.10.2013 11:17

Не работает селектор в Chrome
 
Здравствуйте, очень нуждаюсь в помощи, не работает данный кусок кода:
$(xmldata).find('ae\\:reportDefinition').each(function(){
						var item = "<tr>"; 
						$(this).find('ae\\:column').each(function(){
									item += "<th>";
									var in_tag = $(this).find('ae\\:displayName').text();
									item += in_tag+"</th>";
								});
						item += "</tr>";
						$('#kb_result').append(item);
				});

В мозиле все работает на ура, однако в хроме данные селекторы не срабатывают и не находят элементы. Подскажите почему?
P.S. Даже в IE работает

danik.js 29.10.2013 13:12

Цитата:

Сообщение от tzarek
Подскажите почему?

Не уверен что спецификация разрешает искать XML элементы по таким селекторам. Как вариант - убрать префикс и проверять результат выборки на соотвествие нужному неймспейсу.

devote 29.10.2013 13:46

Цитата:

Сообщение от danik.js
Не уверен что спецификация разрешает искать XML элементы по таким селекторам.

ну если честно, хром вполне справляется с подобными селекторами:
<ns:test>213</ns:test>
<script>
	alert(document.querySelector('ns\\:test'));
</script>

danik.js 29.10.2013 14:11

Цитата:

Сообщение от devote
ну если честно, хром вполне справляется с подобными селекторами:

C HTML элементам да. А почему бы и нет? У tzarek'а видимо xml'лька все же..

tzarek 29.10.2013 15:35

Да, XML. Проблема была решена.
$(xmldata).find('ae\\:reportDefinition, reportDefinition').each(function(){
02
                        var item = "<tr>";
03
                        $(this).find('ae\\:column, column').each(function(){
04
                                    item += "<th>";
05
                                    var in_tag = $(this).find('ae\\:displayName, displayName').text();
06
                                    item += in_tag+"</th>";
07
                                });
08
                        item += "</tr>";
09
                        $('#kb_result').append(item);
10
                });

Вот такие изменения в коде

danik.js 29.10.2013 19:51

То есть ты сделал как я предложил, но решил не париться проверкой неймспейса? А нафиг оставил селектор с префиксом (раз мы все равно его игнорируем во втором же селекторе)?

danik.js 29.10.2013 20:01

Кстати сейчас глянул - селектор ae:\\reportDefinition не работает ни в FIrefox ни в IE.

var doc = new DOMParser().parseFromString('<root xmlns:ae="dummy"><ae:reportDefinition /></root>', 'application/xml');
alert(doc.querySelector('ae\\:reportDefinition'));
alert(doc.querySelector('reportDefinition'));


Часовой пояс GMT +3, время: 14:35.