2011-06-12 8 views
5

que estoy tratando de probar si existe el método .prop() de la corriente incluido jQuery (por razones de compatibilidad) a través de:jQuery .prop) compatibilidad (

if(typeof $.prop === 'function') 

que sería de esperar que la condición anterior es true para jQuery >= 1.6 y false para jQuery < 1.6 que puedo entender desde el docs

de todos modos, las pruebas de esto en jsFiddle, conduce a:

typeof $.prop === 'function' es:

  • true cuando jQuery >= 1.6
  • false cuando jQuery < 1.6 and jQuery > 1.3
  • true cuando jQuery <= 1.3

here es el guión muy muy simple que proporcionan los resultados anteriores (solo cambiar la versión de jQuery para ver qué Lo he descrito).

Cuando trato de usar ese .prop() con jQuery, es decir, 1.3 obtengo el error .prop is not a function. También ocurre el mismo problema al realizar pruebas fuera de jsfiddle. ¿Es normal tal comportamiento? ¿Cómo podría realmente probar si .prop() está disponible?

Gracias

+0

hice la prueba en FF4 , Safari5 y Chrome12 – Dalen

+0

lo siento incomprendido –

+0

Por qué apoyar 1.3. Es realmente viejo. – Raynos

Respuesta

7

alert(typeof $.fn.prop === 'function')

desea comprobar para el método .prop en el prototipo de jQuery, que vive en $.fn. Esto es falso en 1.3.

También evitaría la detección de características para las versiones de jQuery y en su lugar admitiría una versión en particular (y más).

4

usted está comprobando la existencia de un método estático.

Debe comprobar el método de instancia escribiendo $.fn.prop ($.fn es lo mismo que $.prototype).

+0

Es lo mismo que '$ .fn.init.prototype' – Raynos

6

Lo que hice, es construir una función compatible para el apoyo, para las versiones de jQuery, que no utiliza prop:

(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); 

Puede probar este código: http://jsfiddle.net/JtK2Q

Cuestiones relacionadas