entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Problema Jquery Uncaught TypeError: undefined is not a function

Hola,

Tengo un problemilla con Jquery a ver si podeis echarme una mano ;)

Tengo este código:

<pre>
if ($('.rev_slider').size() > 0) {
  var rev_id = $('.top-slider .rev_slider').attr('id');
      rev_id = rev_id.replace('rev_slider_','');
      rev_id = rev_id.replace('_2','');

  /*var revapi_id = eval('revapi'+rev_id);*/
  var revapi_id = 'revapi'+rev_id;

  revapi_id.bind("revolution.slide.onloaded",function (e) {

      $('.top-slider').animate({height:$('.rev_slider').height()},300, function(){$('.top-slider').height('auto')});

  });
}
</pre>

El problema es cuando llega a la línea de:

<pre> revapi_id.bind("revolution.slide.onloaded",function (e) {</pre>

Da el error:

Uncaught TypeError: undefined is not a function

A ver si podeis orientarme mas o menos de que puede ser.

Gracias y un saludo

0voto

Leonardo-Tadei comentado

Hola Nebur,

para ver esto a mi me haría falta el HTML completo de la página. El error viene por el lado de que "revolution.slide.onloaded" no parece existir como elemento, y por eso se obtiene un "undefined"...

1 Respuesta

2votos

El problema está en que estás tratando a revapi_id como si fuese un objeto jQuery cuando en realidad es una cadena de texto (var revapi_id = 'revapi'+rev_id) (podrías comprobarlo haciendo un console.log(typeof revapi_id)).

¿Cuál podría ser la solución? Pues depende de cómo tengas el HTML y qué objeto jQuery es el que quieres recuperar, pero por lo que leo en el código que has puesto imagino que querrás recuperar el elemento HTML que tiene el ID almacenado en la variable revapi_id, por lo que podrías hacer lo siguiente:

...
var revapi_id = 'revapi'+rev_id;
var $revapi = $("#" + revapi_id);
$revapi.bind("revolution.slide.onloaded",function (e) {
    ...
}
...

Sustituye los puntos por el código correspondiente y tendrás la solución que te propongo.

Como he comentado más arriba, no sé si esto es lo que buscas, en cualquier caso coméntalo para que podamos echarte una mano.

Un saludo.

0voto

Nebur comentado

Hola,

Muchas gracias a ambos por vuestras respuestas. Pues ambos tenias razón!. Yo volviéndome loco y resulta que era "revolution.slides.onloaded" el elemento html!. Aún no funcionaba bien e hice lo que me dijo humberto_garcia_caballero y ya funciona correctamente.

Marco como mejor respuesta la única que hay, aunque el mérito es de ambos ;)

Muchas gracias y un saludo.

Obs: movido a comentario

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta