Я пытаюсь стандартизировать хаки в библиотеке, чтобы использовать JavaScript для настройки Enterprise Platform, очень сложной для написания кода на стороне клиента. В основном то, что я пытаюсь сделать, позволяет пользователю передавать ссылку на нужные им данные и независимо от того, как она хранится, я попытаюсь получить ее с помощью нескольких заранее определенных методов. Я знаю, что этот процесс не очень хорош, но нет никаких альтернатив тому, что мы пытаемся сделать.Объект или свойство не поддерживается
Я использую jQuery 1.6.2 и привязан к этому из-за зависимостей других библиотек.
Следующая строка:
if ($('input[id^=' + lineItemAttributeId + ']').length > 0) {
не дает следующее сообщение об ошибке: Объект не поддерживает это свойство или метод в IE8, но ни одна другая платформа.
Services.prototype.getAttributeValue = function(docNum, variableName, defaultValue) {
if (docNum == "1") {
var quoteItemAttributeId = variableName;
if ($('input[id*=' + quoteItemAttributeId + ']').length > 0) {
return $('input[id*=' + quoteItemAttributeId + ']').val();
} else if ($('textarea[id*=' + quoteItemAttributeId + ']').length > 0) {
return $('textarea[id*=' + quoteItemAttributeId + ']').val();
} else if ($('select[name*=' + quoteItemAttributeId + ']').length > 0) {
return $('select[name*=' + quoteItemAttributeId + ']').find("option:selected").val();
} else {
return defaultValue;
}
} else {
var lineItemAttributeId = docNum + "_" + variableName;
if ($('input[id^=' + lineItemAttributeId + ']').length > 0) {
return $('input[id^=' + lineItemAttributeId + ']').val();
} else if ($('textarea[id*=' + lineItemAttributeId + ']').length > 0) {
return $('textarea[id*=' + lineItemAttributeId + ']').val();
} else if ($('select[name*=' + lineItemAttributeId + ']').length > 0) {
return $('select[name*=' + lineItemAttributeId + ']').find("option:selected").val();
} else {
return defaultValue;
}
}
};
Я попытался:
if ($('input[id=' + lineItemAttributeId + ']').length > 0) {
if ($('input[id*=' + lineItemAttributeId + ']').length > 0) {
с аналогичными результатами.
Любая идея о том, что я делаю неправильно?
Какую версию jQuery вы используете? jQuery 2.x не поддерживает IE8 и ранее. Если вам нужно поддерживать старые браузеры, вы должны использовать jQuery 1.x. – Barmar
Я бы попробовал 'if ($ ('input [id ="' + lineItemAttributeId + '"]'). Length> 0)' (обратите внимание на двойные кавычки, добавленные вокруг внутреннего аргумента). Это, как правило, самый безопасный способ использования селекторов атрибутов, чтобы избежать неожиданных или нежелательных странных символов из вызываемых выпусков – nbrooks
Эта скрипка http://jsfiddle.net/barmar/1p1gjLgg/1/ работает для меня в IE8 – Barmar