div, вложенный внутрь, дает странный результат innerHTML в FireFox - PullRequest
2 голосов
/ 05 августа 2010

В IE 8 jQuery действует так, как я ожидал:

$('div',$('<a><div></div></a>')).html('test').html()
"test"

В FireFox:

$('div',$('<a><div></div></a>')).html('test').html()
"<a>test</a>"

Он ставит якоря вокруг того, что я хотел.Кто-нибудь знает, почему это произойдет?

РЕДАКТИРОВАТЬ: Установка этого с простым javascript (то есть установка innerHTML) вызывает проблему.Поэтому я думаю, что мой настоящий вопрос: почему Firefox меняет то, что я установил?Это часть какой-то эзотерической спецификации или это ошибка?

Ответы [ 4 ]

5 голосов
/ 05 августа 2010

Упаковка <a> вокруг <div> является недействительным html.Может быть, Firefox исправит это для вас на лету и вернет действительный html?

3 голосов
/ 05 августа 2010

хорошо, firefox, возможно, знает, что ты нарушаешь правила.

но он не знал, что вы сделали, если вы используете .append().

$('div',$('<a><div></div></a>')).html('').append('test').html(); // give you 'test'
1 голос
/ 27 июня 2011

Была такая же проблема с Firefox 3.6.18 (4.x, 5.x правильно отображает страницу). Быстрое и грязное решение, которое я придумал, заключалось в том, чтобы обернуть все внутри с .

1 голос
/ 26 января 2011

Не уверен, применимо ли это здесь (так как мы не знаем, какой тип документа вы используете), но перенос <a> вокруг <div> вполне допустим в html5, но Firefox, очевидно, пока не справляется с этой задачей,Я предполагаю, что FF4 будет, хотя

...