Статьи

Решения для распространенных ошибок jQuery

jquery-errors-post

Посмотрим правде в глаза, никто не идеален! Все время от времени делают ошибки, и jQuery одинаков — хотя у них есть отличная команда по исправлению ошибок, которая исправляет ошибки и круглосуточно совершенствует jQuery, ошибки могут время от времени появляться.

В свете этого и того факта, что я занимался разработкой jQuery уже довольно давно, время от времени в Firebug Console будет отображаться сообщение об ошибке: «Я должен Google это». Я подумал, что поделюсь некоторыми из наиболее распространенных ошибок jQuery, чтобы при их обнаружении у вас было представление о том, как решить головоломку.


Ошибка: «jquery.1.4.2.js ошибка« a is null »»

jquery.1.4.2-error

Возможные причины

a is null
[Break On This Error] a))();else c.error("Invalid JSON: "+a)...(d)if(i)for(f in a){if(b.apply(a[f],
jquery....min.js (line 29)

Я думал, что это может быть связано с ошибкой этой линии, потому что не было совпадений.

 $.each(rawData.match(secureQueryRegex), function(index, currentQuery)

Затем я подумал, что это, возможно, был размер данных, поскольку он имел длину 69 443 символа…

Возможные решения

Но в конце концов я обнаружил, что внутри строки данных были плохие символы (которые были получены непосредственно из HTML). См. Функцию cleanHTML () для удаления плохих символов из HTML.

 rawData =  rawData.replace(/[^a-zA-Z 0-9]+/g,'');  /* clean up for match() statement */

Конкретные версии

Видно в 1.4.2


Ошибка: «SyntaxError: неверный инициализатор объекта»

invalid-object-init

Возможные причины

Ошибка синтаксиса объявления объекта.

 $.getScript(
{
	'http://www.domain.com/js/preview.js'
});

ИЛИ

 $("div").css(
{
    padding:'0',
    margin,'4px'
});

Возможные решения

Снимите скобки, функция getScript () может быть вызвана только с помощью URL. То же самое относится к любому другому объявлению объекта или вызову функции с объектом, который его не принимает.

 $.getScript('http://www.domain.com/js/preview.js');

Поменяйте запятую на точку с запятой.

 $("div").css(
$("div").css(
{
    padding: '0',
    margin: '4px'
});

Конкретные версии

Видно в 1.4.2


Ошибка: «необработанное исключение: синтаксическая ошибка, нераспознанное выражение: [объект HTMLLIElement]»

syntax-error

Возможные причины

Это похоже на ошибку селектора jQuery. В v1.4.2 или более ранних версиях оно появляется чаще, поэтому попробуйте обновить его до последней версии jQuery.

 $(this+' a').css(
 var req = $("input[@name=required]").val();

Возможные решения

Не уверен, но взгляните на ваши селекторы и убедитесь, что они работают правильно. Попробуйте сначала включить полные версии jQuery, чтобы получить более подробную информацию об ошибке, которая может быть причиной проблемы.

@ — старый синтаксис селектора.

 var req = $("input[name=required]").val();

Конкретные версии

Видно в 1.4.2


Ошибка: « Ошибка синтаксиса: отсутствует) после списка аргументов»

no-idea

Возможные причины

Отсутствуют закрывающие скобки или фигурные скобки.

 })(jQuery

Возможные решения

 })(jQuery);

Конкретные версии

Видно в 1.4.2


Ошибка: « Ошибка синтаксиса: отсутствует: после идентификатора свойства»

mssing-property-id

Возможные причины

Это повторение ошибки инициализации объекта, но оно вызвано использованием фигурных скобок, когда они не нужны.

 $.getScript(
{
	'http://www.domain.com/js/preview.js', function(data, textStatus){
   console.log(data); //data returned
   console.log(textStatus); //success
   console.log('Load was performed.');
});

Возможные решения

 $.getScript('http://www.domain.com/js/preview.js', function(data, textStatus)
	{
	   console.log(data); //data returned
	   console.log(textStatus); //success
	   console.log('Load was performed.');
	}
);

Конкретные версии

Видно в 1.4.2


Ошибка: « Ошибка типа: jsSrcRegex.exec (v) имеет значение null»

Возможные причины

Вызвано двойным exec для того же регулярного выражения ИЛИ вызвано неверным html «jsSrcRegex.exec (v) is null»).

 console.log(jsSrcRegex.exec(v));
console.log(jsSrcRegex.exec(v)[1]);

Возможные решения

Сначала проверьте HTML:

 if(jsSrcRegex.exec(html)){ 
	console.dir(jsSrcRegex.exec(html)[1]);
}

ИЛИ

Используйте перекомпилировать регулярное выражение:

 console.log(jsSrcRegex.exec(v));
jsSrcRegex.compile();
console.log(jsSrcRegex.exec(v)[1]);

Конкретные версии

н /


Ошибка: «Внутренний метод потомков XML вызван для несовместимого объекта»

xml-error

Возможные причины

Двойной полный останов в цепочечных командах jQuery.

 $('.'+inElem)..removeClass('mouseover').addClass('selected');

Возможные решения

Чтобы исправить, просто удалите двойной полный стоп.

Конкретные версии

н /


Ошибка: «неопределенный строковый литерал»

Возможно, вы видели это раньше! 🙂
string-error

Возможные причины

Множество возможных причин: может быть, что вы поместили код там, где должен быть селектор, или в несколько строк, или в неверный формат строки (плохие символы), или в угловые скобки и т. Д.

Возможные решения

Посмотрите jQuery Undefineded String Literal Error для очень подробного объяснения этой ошибки!

Конкретные версии

н /


Ошибка: «Синтаксическая ошибка: нераспознанное выражение»

jquery-error-unrecognised-expression

Возможные причины

Отсутствует имя атрибута в селекторе.

 $('input["depDate"]').val(departureDate);

Возможные решения

Добавьте атрибут name (или id, class и т. Д.) В селектор.

 $('input[name="depDate"]').val(departureDate);

Конкретные версии

н /


Ошибка: «SyntaxError: синтаксическая ошибка»

string-error
(щелкните изображение, чтобы увеличить)

Возможные причины

Ну, эта ошибка очень общая, и может быть несколько причин, почему это происходит, но в этом примере вы можете ясно увидеть, что она была вызвана дополнительным знаком «+» в селекторе jQuery.

 $('.itemColumn'+currentColNum+).append(v);

Возможные решения

К сожалению, на этом вы просто должны тщательно проверить синтаксис и убедиться, что у вас нет ошибок. Попробуйте использовать что-то вроде jshint или другого js checker, чтобы помочь.

 $('.itemColumn'+currentColNum).append(v);

Конкретные версии

н /


Ошибка: «(d ||« »). Split не является функцией»

live-hover-error

Возможные причины

Извините, я нашел эту ошибку и сделал скриншот, но не могу вспомнить, как я его получил! Я думаю, что это может быть ошибка при наведении изображения в jQuery 1.4.2, но не уверен.

Вот что-то похожее на ошибку 862, которую я нашел (это было зарегистрировано 5 лет назад, ага).

Иногда вы видите похожую ошибку, которая гласит «ошибка jquery d не определена» или такая, которую я видел несколько раз в jQuery 1.5.

Возможные решения

Обновление до последней версии jQuery.

Конкретные версии

Видно в 1.4.2


Ошибка: «Синтаксическая ошибка, нераспознанное выражение:>»

error1b

Возможные причины

 if ($('#'+$form).length == 0)
{
    ...
}

if ($('#'+$form))
{
    ...
}

Возможные решения

Не пытайтесь использовать html как элемент селектора jQuery.

Конкретные версии

Видно в 1.7.1


Ошибка: «Синтаксическая ошибка, нераспознанное выражение: # [объект Объект]»

error2

Возможные причины

Использование элемента DOM в качестве элемента селектора jQuery.

 $('#'+$form)

Возможные решения

Проверьте правильность ваших селекторов jQuery.

Конкретные версии

Видно в 1.7.1


Ошибка: «Синтаксическая ошибка, нераспознанное выражение: имя»

error-expression-name

Возможные причины

 var code = $(':input:name=["disCode"]').val();

Возможные решения

Переместить квадратную скобку перед именем атрибута.

 var code = $(':input:[name="disCode"]').val();

Конкретные версии

Видно в 1.7.2


Ошибка: «Внутренний метод потомков XML вызван для несовместимого объекта»

XML descendants internal method called on incompatible Object

Возможные причины

 discElem..parent().after(data.html);

Возможные решения

 discElem.parent().after(data.html);

Конкретные версии

Видно в 1.7.2


Ошибка: «SyntaxError: неверная метка»

SyntaxError invalid label

Возможные причины

Использование двоеточия в конце оператора.

 console.log(count):

Возможные решения

Используйте точку с запятой вместо двоеточия.

 console.log(count);

Конкретные версии

Видно в 1.7.2


Ошибка: « Ошибка типа: emails.match (/ @ / gim) имеет значение null»

TypeErroremailsmatch

Возможные причины

Использование функции .length для регулярного выражения, которое не имеет совпадений.

 var emails = '',
    count = emails.match(/@/igm).length;

Возможные решения

Если вы ссылаетесь на свойство length после этого, оно просто возвращает undefined и без ошибок. Если вы используете следующее, вы увидите ошибку: «TypeError: count is null».

 var emails = '',
    count = emails.match(/@/igm),
    length = count.length;

Если вы проверили, что счетчик не равен нулю, прежде чем присваивать значение, это не будет ошибкой и даст вам 0 для отсутствия счета.

 var emails = '',
    regex = /@/igm,
    count = emails.match(regex),
    count = (count) ? count.length : 0;

Конкретные версии

Видно в 1.7.2


Ошибка: ошибка в Actionscript. Используйте блок try / catch, чтобы найти ошибку ».

Возможные причины

Использование вызова Flowplayer или Flash-объекта с ошибками.

 $f('fms2').toggleFullscreen();

Возможные решения

Попробуйте проверить код инициализации для Flash-объекта.

Конкретные версии

Видно в 1.7.2


Увидев все эти ошибки, вот что подбодрить вас!

smiley-face

Или вы можете увидеть больше ошибок и ошибок на Официальном jQuery Bug Tracker .

Если вы обнаружите какие-либо ошибки, пожалуйста, оставьте комментарий с ошибкой и решением, и я добавлю его в список!

Ура!