JQuery & элемент param - PullRequest
       1

JQuery & элемент param

1 голос
/ 16 февраля 2012

Правильно ли, что этот код

$('<param><div></div></param>')

производит этот вывод?

[<param>, <div></div>]

, тогда как с большинством других тегов (например: раздел)

$('<section><div></div></section>')

1010 * производит *

[<section>...</section>]

Другими словами, jquery удаляет элементы внутри элемента param и помещает их рядом с ним. Я знаю, что вы обычно не будете помещать элементы dom в тег param. Но я использую jquery для обхода XML-документа и столкнулся с этой проблемой.

Каким будет обходной путь?

Ответы [ 3 ]

4 голосов
/ 16 февраля 2012

Как я сказал в комментарии, jQuery ожидает, что HTML не XML, в HTML param является самозакрывающимся тегом и не может иметь дочерних узлов, поэтому jQuery исправит это для вас.

Вы можете попробовать:

$( $.parseXML( '<param><div></div></param>' ) ).children()

Что дает:

[<param>...</param>]
1 голос
/ 16 февраля 2012

Вы должны начать создавать действительный документ XML:

var xml ='<param><div></div></param>';
var xmlDoc = $.parseXML( xml );

Тогда вы можете работать над этим документом:

var $xml = $( xmlDoc );
0 голосов
/ 16 февраля 2012

Тег PARAM является автоматически закрывающимся тегом, он не может содержать другие элементы внутри. Μ

При применении <param><div></div></param> он фиксируется на <param><div></div>, поэтому вы получаете два элемента в объекте jquery.

То же самое происходит, например, с <input><div></div></input>.
INPUT автоматически закрывается, и это приводит к <input><div></div>

Я не думаю, что jQuery это исправляет, это просто потому, что jQuery использует innerHTML.

document.getElementById('mydiv').innerHTML = '<param><div></div></param>';
// you'll get two child elements <param> + <div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...