2012-07-30 61 views
17

我有这个旧的jQuery UI滑块,几个月前工作得很好,但现在我似乎得到一个异常阅读:无法调用方法'addClass'of未定义。我检查了传入滑块的值,它们是常规的Javascript日期。jQuery UI滑块 - 无法调用未定义的方法'addClass'

$('#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); 
     } 
     }); 

是否有一个特别的原因,我可能会得到这个新的错误?

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

+0

您能够设置断点并遍历代码吗?这个错误听起来对我来说“addClass”被称为某处,并且传递给它的值是未定义的。如果你可以遍历代码,也许你可以看到值是否正确初始化。另外,你最近是否更改过jQuery的版本? – Sam 2012-07-30 19:19:29

+0

你检查了日志吗? jQuery UI有一些bug,有一天,我在一个特定的datepicker实现中遇到了一个烦人的bug,如果在同一个页面中有文本输入,它就不起作用! – SexyBeast 2012-07-30 19:19:32

+0

我假设“不能调用未定义的方法'addClass'”。来自你的jquery.js文件? – 2012-07-30 19:19:42

回答

35

对于任何人回顾这个问题,如果你从CDN拉,尝试从最新的jQuery UI版本拉。我也遇到了这个问题,并通过使用后来的jQuery UI版本解决了这个问题。

+2

我有一个滚动插件的相同问题,我将1.8.23版本拉到我的项目中,现在它就像一个魅力一样工作! – 2012-09-26 17:15:31

+0

成功!很高兴我可以节省一些时间。 :-) – Vinay 2012-09-26 19:20:25

+3

我希望我能用“一百万”“回答”这个答案。谢谢! – 2012-09-28 09:26:22

19

我用整数中的“分”,“最大”和“价值观”解决了这个错误。也许你正在设置空值。
jQuery的滑块规范说:

  • 最大数量默认值:100
  • 分钟数默认值:0
  • 值数量默认值:0

因此, “值” 是一个数字数组。

+0

这解决了我的问题,谢谢。 – Raspo 2012-11-02 11:22:05

+0

同上。我把'value'设置为一个未定义的变量。 – merv 2012-12-31 05:03:05

+0

我用'.val()'从输入中抓取了我的min/max等,我不得不将它们包装在'parseInt()'中,并且为我排序 – 2013-04-22 16:10:42

1

另一种可能性 - 如果滑块缺少最小或最大值,则会出现此错误。如果您的startFiling或endFiling不计算日期,则在尝试计算新手柄位置时,滑块代码失败。

10

对于谁仍然有这个问题的人,请确保您要添加的值(minmaxvalues都为数字,而不是STRINGS!

一直试图诊断在下面的代码是没有问题:

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() 
    } 
}) 

由于t.attr()返回一个字符串,滑块是无法设置valueMouse对jQuery用户界面的1.10.1版本的12843线而不是作为一个价值,它返回一个字符串(类似于39.99549.21东西(分钟。值为39.99级联549.21 - 百分比*最大值)

希望能帮助别人!

+0

不要使用attr('data-min'),在jQuery中使用数据('min'),HTML5标准 – 2013-05-31 08:38:39

+0

我的问题是传递'String'而不是'Number'来更新滑块值 – bFunc 2014-02-11 09:54:41

3

我也有最新版本的这个问题。该解决方案是容易的:使用parseInt函数()动态值传递到滑块

设置器例如用于jQuery用户界面滑块:

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

采用未修饰过的jQuery-UI.min.js解决了这个问题。使用自定义脚本导致了错误,例如jQuery-UI-custom.js

相关问题