jQuery Autosize plugin di errore – valore intermedio(…) non è una funzione

Io uso jQuery Autosize plugin:

http://www.jacklmoore.com/autosize/

Lo script si può vedere qui:

http://www.jacklmoore.com/js/jquery.autosize.js

Questo è come io uso lo script:

jQuery(function($){$(document).ready(function(){
$('textarea').autosize();
}

Problema N 1

Appena aggiornato lo script per la versione più recente e ha smesso di funzionare:

"TypeError: (intermediate value)(...) is not a function"

Console Javascript segnala questo errore sull’ultima riga dello script:

}(window.jQuery || window.$)); 

Problema N 2

Script non funziona in modalità windows (PrettyPhoto) e javascript console non da errori.

Tutte le idee?

  • Non c’è alcun motivo per utilizzare jQuery(function($){$(document).ready(...)}). Passaggio di una funzione in jQuery è la stessa cosa che usare ready. Basta fare jQuery(function($) { ... }); senza la chiamata a ready.
  • Una buona pratica quando si lavora con più file JS è quello di aggiungere un punto e virgola all’inizio di ogni file di terminare qualsiasi precedente non valido logica.
  • Per me succede quando mi definiscono una funzione prima IIFE (Immediatamente Richiamato Espressione di Funzione).
InformationsquelleAutor user | 2014-04-29



3 Replies
  1. 147

    il "TypeError: (intermediate value)(...) is not a function"
    appare come il risultato di perdere un punto e virgola in funzione PRIMA di quello che si genera un errore. Potrebbe essere semplice come:

    jQuery(function($){$(document).ready(function(){
    $('textarea').autosize();
    }  
    ); //<-----

    o potrebbe essere la funzione dichiarata prima.
    Un esempio di come questo è la causa è in questo codice:

    var populate = function(sw) {
      myglobalswitch = sw;
      window.setTimeout(repopulate, 250, sw);
    }
    
    (function( $ ) {
    $.widget( "custom.combobox", {
    _create: function() {
    ....
    })( jQuery );

    risultati in valore Intermedio non è… l’ultima riga: })( jQuery );

    Tuttavia, la correzione è l’aggiunta di un punto e virgola per la popolare funzione:

    var populate = function(sw) {
      myglobalswitch = sw;
      window.setTimeout(repopulate, 250, sw);
    }  ;

    per evitare che il parser da pensare che “var popolare = …” e (function($) … sono una singola istruzione, la seconda si estende dal primo.

    • suggerimento: ogni strani, inspiegabili errori di analisi sono di solito il risultato di una malintesa citazioni e i punti e virgola
    • Questo si verifica anche se un IIFE è dichiarata dopo che un oggetto, che non termina con un punto e virgola. Questo accade quando ‘option strict’ è attivo.
    • Mentre il mio codice è in alcun modo rilevanti per questo, il punto e virgola RISOLTO il TUTTO. Grazie! (Sciocco funzioni che restituiscono oggetti, tra parentesi immediatamente chiamare una funzione in oggetto). La prossima linea parentesi stavano facendo la precedente linea di analizzare come una chiamata di funzione
  2. 7

    FWIW l’automatica invocazione metodo è cambiato. Se si finisce qui e si utilizza con jQuery

    In precedenza era

    $('textarea').autosize();

    La nuova invocazione è

    autosize($('textarea'));
    • Grazie, perso completamente!
    • Grazie per la nota sulla versione di differenza. Stava cercando di riparare l’errore nella vecchia versione.
  3. -1

    Si può avere dichiarato una funzione, all’interno di una funzione, dopo che era necessario. Questo era il mio problema.

Lascia un commento