#jquery #css-selectors
#jquery #css-селекторы
Вопрос:
Кто-нибудь может сказать мне, почему я получаю исключение, используя приведенный ниже код?
var invalidhtml = '<tr><div id="residualErrors" style="display:none;"></div><form action="" method="post"><table><tr><td></td></tr></table></form></tr>';
var form = $("form", invalidhtml);
Комментарии:
1. Это не имеет смысла, ваш var
invalidhtml
не используется повторно, и его строка содержимого не имеет закрытия ‘, кроме того, html в строке недопустим.2. Я предполагаю, что somehtml должен быть invalidhtml . В этом случае @Clive прав в том, что вы передаете неправильный тип данных в качестве контекста.
3. Извините за это, ребята, вы слишком быстры для меня 🙂 Исправил html (somehtml должен был быть invalidhtml)) но я собираюсь ответить на это сам, как только переполнение стека позволит мне, я включаю его, чтобы спасти кого-то еще от борьбы, через которую я прошел. По сути, ситуация выглядит следующим образом:
4. «Проблема в том, что html недопустим, поскольку под элементом tr нет элемента td. Обычно jQuery может справиться с этим, но если где-то в элементе tr также есть таблица, тогда возникает исключение «.
5. Деннис: Вы можете передать строку как «Документ». смотрите «$(«div», xml.responseXML);» на api.jquery.com/jQuery в качестве примера.
Ответ №1:
Я бы предположил, что по вашему названию somehtml
вы передаете строку, когда jQuery ожидает объект.
Комментарии:
1. Вы можете передать строку как «Документ». смотрите «$(«div», xml.responseXML);» на api.jquery.com/jQuery в качестве примера.
Ответ №2:
Проблема в том, что html недопустим, поскольку под элементом «tr» нет элемента «td». Обычно jQuery может справиться с этим, но если где-то в элементе «tr» также есть «таблица», тогда возникает исключение.
Исходное место, где у меня возникла проблема, было намного сложнее html, поэтому я надеюсь, что это кому-то поможет.
Любой из приведенных ниже допустимых примеров htmlработает, недопустимый — нет.
var invalidhtml = '<tr><form action="" method="post"><table><tr><td></td></tr></table> </form></tr>';
var validhtml = '<tr><form action="" method="post"></form></tr>';
var validhtml2 = '<div><form action="" method="post"><table><tr><td></td></tr></table> </form></div>';
var validhtml3 = '<table><tr><td><form action="" method="post"><table><tr><td></td></tr></table></form></td></tr></table>';
var validhtml4 = '<tr><td><form action="" method="post"><table><tr><td></td></tr></table> </form></td></tr>';
var form = $("form", validhtml);
form = $("form", validhtml2);
form = $("form", validhtml3);
form = $("form", validhtml4);
form = $("form", invalidhtml); // crash here in ie, proper browsers fail silently