2012-07-30 77 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

相關問題