2012-07-30 12 views
17

Tenía este antiguo control deslizante jQuery UI que había funcionado bien hace unos meses, pero ahora parece que recibo una excepción leyendo: No se puede llamar al método 'addClass' indefinido Revisé los valores que se pasan al control deslizante y son fechas de Javascript regulares.Control deslizante jQuery UI - No se puede llamar al método 'addClass' de undefined

$('#dateFilter').click(function() { 
    return $('#sliderContainer').slideToggle(200); 
    }); 

    $(function() { 
    var endFiling, startFiling; 
    startFiling = Date.parse($('#startFiling').val()); 
    endFiling = Date.parse($('#endFiling').val()); 
    return $('#filingDateSlider').slider({ 
     range: true, 
     min: startFiling, 
     max: endFiling, 
     step: 86400000, 
     values: [startFiling, endFiling], 
     slide: function(event, ui) { 
     var eD, end, sD, start; 
     sD = new Date(ui.values[0]); 
     start = dateFormat(sD); 
     eD = new Date(ui.values[1]); 
     end = dateFormat(eD); 
     $('#filingStartDate').text(start); 
     return $('#filingEndDate').text(end); 
     } 
     }); 

¿Hay algún motivo en particular por el que pueda obtener este nuevo error?

http://i.imgur.com/xC2E6.jpg

+0

¿Puede establecer un punto de interrupción y recorrer el código? El error me parece que "addClass" se está llamando en alguna parte y el valor que se le pasa no está definido. Si puede recorrer el código, quizás pueda ver si los valores se están inicializando correctamente.Además, ¿ha cambiado la versión de jQuery recientemente? – Sam

+0

¿Revisó el registro? jQuery UI tiene algunos errores, el otro día, experimenté un error tedioso en una implementación particular de datepicker, ¡no funciona si hay una entrada de texto en la misma página! – SexyBeast

+0

Supongo que "No se puede llamar al método 'addClass' de undefined." viene de tu archivo jquery.js? –

Respuesta

35

Para cualquier persona que lea esta pregunta, si está sacando de un CDN, intente extraer de la última versión de jQuery UI. También obtuve este problema, y ​​se resolvió usando una versión posterior de jQuery UI.

+2

Tuve el mismo problema con un plugin de scroll y saqué la versión 1.8.23 de mi proyecto y ahora funciona como un amuleto. –

+0

¡Éxito! Me alegro de poder salvar a alguien en algún momento. :-) – Vinay

+3

Ojalá pudiera "subir" esta respuesta con un millón. ¡Gracias! –

19

I resolvieron este error mediante el uso de números enteros en "min", "valores" "max" y. Tal vez estás estableciendo valores nulos.
especificación jQuery deslizante dice: Número

  • frecuencia máx: 100
  • min Número predeterminado: 0
  • valor de número predeterminado: 0

Así que los "valores" son una conjunto de números.

+0

Eso resolvió el problema para mí, gracias. – Raspo

+0

ídem. Tenía 'value' establecido en una variable indefinida. – merv

+0

Estaba agarrando mi mínimo/máximo, etc. de las entradas usando '.val()', tuve que envolverlos en 'parseInt()' y eso lo ordenó para mí –

1

Otra posibilidad: este error puede aparecer si faltan las mínimas o máximas para el control deslizante. Si su startFiling o endFiling no están evaluando una fecha, el código del control deslizante falla al tratar de calcular la nueva posición del manejador.

10

Para cualquier persona que todavía está teniendo este problema, asegúrese de que los valores que añades (min, max, y values son todos los números y no CUERDAS!

estado tratando de diagnosticar un problema donde el código siguiente estaba fallando :

t.slider({ 
    range : true, 
    min : t.attr('data-min'), 
    max : t.attr('data-max'), 
    values: [t.attr('data-min'), t.attr('data-max')], 
    step : 1.00, 
    slide : function (e, ui) { 
    var 
     v = (s == 'price') ? '£' + ui.values[0] + ' - £' + ui.values[1] : ui.values[0] + ' - ' + ui.values[1] + 'kg' 
    $('#filter-' + s).html(v) 
    }, 
    stop : function() { 
    Items.filter() 
    } 
}) 

Como t.attr() devuelve una cadena, deslizante fallaba para establecer valueMouse en la línea 12843 de la versión 1.10.1 de jQuery UI en lugar de ser un valor, se devuelve una cadena de (algo similar a 39.99549.21 (min. valor de 39.99 concatenado con 549.21 - un porcentaje * valor máximo)

Espero que ayude a alguien!

+0

No use attr ('data-min'), use datos ('min') en jQuery, estándar HTML5 –

+0

Mi problema fue pasar 'Cadena' en lugar de 'Número' para actualizar los valores del control deslizante – bFunc

3

Tuve este problema con las últimas versiones, también. La solución es fácil: utilizar parseInt() para pasar valores dinámicos para deslizadores

ejemplo Setter para slider jquery ui:

$("#mySlider").slider("option",{min: parseInt(value.min), max:parseInt(value.max),value: parseInt(value.active)}); 
0

resuelto el problema utilizando sin modificar jQuery-UI.min.js. El uso de un script personalizado provocó el error, es decir, jQuery-UI-custom.js

Cuestiones relacionadas