Вопрос

Я пытаюсь проверить, если .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).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top