2013-03-14 11 views
9

Le mie possibilità sono ridotte con questo, ma ho provato un paio di soluzioni tramite Google ma nulla sembra risolvere il problema' Uncaught TypeError: Can not call method ' 'undefined' funzione anonima:Ancora un altro 'Tipo non rilevato' Errore: impossibile chiamare il metodo 'applica' di indefinito '

enter image description here

funziona se da sola senza altro JS, ma se combinati sulla stessa pagina, come altri script ottengo l'errore.

Le righe di codice a cui fa riferimento sono le seguenti con la riga 32 come colpevole. Linea 32 è questa linea - if (resizeTimeout) { clearTimeout(resizeTimeout); }:

var $event = $.event, resizeTimeout; 

    $event.special.smartresize = { 
     setup: function() { 
      $(this).bind("resize", $event.special.smartresize.handler); 
     }, 
     teardown: function() { 
      $(this).unbind("resize", $event.special.smartresize.handler); 
     }, 
     handler: function(event, execAsap) { 
      // Save the context 
      var context = this, 
       args = arguments; 

      // set correct event type 
      event.type = "smartresize"; 

      if (resizeTimeout) { clearTimeout(resizeTimeout); } 
      resizeTimeout = setTimeout(function() { 
       jQuery.event.handle.apply(context, args); 
      }, execAsap === "execAsap"? 0 : 100); 
     } 
    }; 

risposta

4

Indovinare si sta caricando una nuova versione di jQuery. Sembra che jQuery 1.9 e in seguito non disponga della proprietà jQuery.event.handle.

Per quanto ne so, questa non è mai stata una proprietà supportata.

http://jsfiddle.net/xPJN4/

+0

Ok, grazie per questo. Quel codice è stato preso da un tutorial che utilizza v1.8.3. Quale sarebbe un buon sottotitolo a quella vita di codice? – egr103

+0

@ egr103: Non sono sicuro del metodo utilizzato, quindi non posso suggerire un'alternativa. Peccato che un tutorial abbia deciso di utilizzare funzionalità non supportate. –

+0

Sì, neanche io. Oh bene. Ho persino cancellato quella riga, ma non aggiusta ciò che speravo potesse risolvere. – egr103

10

sono riuscito a capirlo, cercando in codice, c'è un metodo chiamato "simulare", che è possibile utilizzare per "due vie su un evento dei donatori per simulare uno diverso.", "Fake originalEvent per evitare la stopropropation del donatore, ma se l'evento simulato previene il default, facciamo lo stesso sul donatore. " Questo mi ha colpito come lo scopo di "impostare il tipo di evento nel tutorial di Brandon Aaron

Invece di:

event.type = "myType"; 
jQuery.event.handle.apply(this, arguments); 

Usa:

jQuery.event.simulate('myType', this, event); 
0

ho incontrato questo errore quando ho caricato accidentalmente la nuova versione di jquery nella testa, quindi ha caricato una versione precedente di jquery. La versione precedente non aveva i metodi che mi servivano dalla versione più recente

0

Ho avuto questo errore utilizzando le versioni precedenti di jQuery e masonry.min.js - Non ho più il codice non minorato!

Sostituzione:

b.event.handle.apply(d,f) 

Con

b.event.simulate('smartresize', d, f) 

risolto il problema e gli script stanno lavorando bene ora, il credito a @ Karl-Forshaw per la correzione ... vorrei commentare in riproduzione, ma non ha la reputazione di farlo!

Problemi correlati