jquery .prop () совместимость
-
27-10-2019 - |
Вопрос
Я пытаюсь проверить, если .prop()
Метод существует в текущем jQuery, включенном (по причине совместимости) через:
if(typeof $.prop === 'function')
Я ожидаю, что приведенное выше условие true
за jQuery >= 1.6
а также false
за jQuery < 1.6
Как я могу понять из док
Во всяком случае, тестирование этого на JSFiddle, приводит к:
typeof $.prop === 'function'
является:
true
когдаjQuery >= 1.6
false
когдаjQuery < 1.6 and jQuery > 1.3
true
когдаjQuery <= 1.3
здесь это очень очень простой сценарий, который дает результаты выше (просто переключите версию jQuery, чтобы увидеть, что я описал).
Когда я пытаюсь это использовать .prop()
с jQuery IE 1.3 я получаю .prop is not a function
ошибка. Та же самая проблема также тестирует за пределами jsfiddle. Это нормально такое поведение? Как я мог по -настоящему проверить, если .prop()
доступен?
Спасибо
Решение
alert(typeof $.fn.prop === 'function')
Вы хотите проверить на .prop
метод на прототипе jQuery, который живет на $.fn
. Анкет Это ложь в 1.3.
Также я бы избежал обнаружения функций для версий jQuery и вместо этого поддерживал определенную версию (и вверх).
Другие советы
Что я сделал, это создать совместимую функцию для опоры, для версий jQuery, которые не используют опору:
(function($){
if (typeof $.fn.prop !== 'function')
$.fn.prop = function(name, value){
if (typeof value === 'undefined') {
return this.attr(name);
} else {
return this.attr(name, value);
}
};
})(jQuery);
Вы можете проверить этот код: http://jsfiddle.net/jtk2q
Вы проверяете существование статический метод
Вам нужно проверить метод экземпляра, написав $.fn.prop
($.fn
такой же как $.prototype
).