2011-06-12 13 views
5

sto cercando di verificare se il metodo .prop() esiste sulla corrente jQuery incluso (per ragioni di compatibilità) tramite:jQuery .prop) compatibilità (

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

Mi aspetterei che la condizione di cui sopra è true per jQuery >= 1.6 e false per jQuery < 1.6 come posso capire dal docs

in ogni caso, prove su jsfiddle, porta a:

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

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

here è molto molto semplice script che forniscono i risultati di cui sopra (basta passare versione jQuery per vedere cosa Ho descritto).

Quando provo a utilizzare quello .prop() con jQuery, ad esempio 1.3, ottengo l'errore .prop is not a function. Lo stesso problema si verifica anche al di fuori di jsfiddle. È normale un comportamento del genere? Come potrei verificare se è disponibile .prop()?

Grazie

+0

ho prove su FF4 , Safari5 e Chrome12 – Dalen

+0

mi spiace frainteso –

+0

Perché supporto 1.3. È molto vecchio – Raynos

risposta

7

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

si desidera controllare per il metodo .prop sul prototipo jQuery che vive $.fn. Questo è falso in 1.3.

Inoltre, evito il rilevamento di funzionalità per le versioni jQuery e supporta invece una versione particolare (e successive).

4

si sta controllando l'esistenza di un metodo statico.

È necessario verificare il metodo di istanza scrivendo $.fn.prop ($.fn corrisponde a $.prototype).

+0

È uguale a '$ .fn.init.prototype' – Raynos

6

Quello che ho fatto, è costruire una funzione compatibile per prop, per le versioni jQuery, che non usa 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); 

È possibile verificare questo codice: http://jsfiddle.net/JtK2Q