未捕获的异常:在初始化之前无法调用滑块上的方法;试图调用方法'禁用'

时间:2012-02-25 16:31:07

标签: javascript jquery jquery-mobile

以下代码块有效:

$("#data\\[User\\]\\[notify_one_day_out\\]").val("0");
$('#data\\[User\\]\\[notify_one_day_out\\]').slider('disable');
$('#data\\[User\\]\\[notify_one_day_out\\]').slider('refresh');

$("#data\\[User\\]\\[notify_one_week_out\\]").val("0");
$('#data\\[User\\]\\[notify_one_week_out\\]').slider('disable');
$('#data\\[User\\]\\[notify_one_week_out\\]').slider('refresh');

$("#data\\[User\\]\\[notify_one_month_out\\]").val("0");
$('#data\\[User\\]\\[notify_one_month_out\\]').slider('disable');
$('#data\\[User\\]\\[notify_one_month_out\\]').slider('refresh');

$("#data\\[User\\]\\[notify_on_release_date_change\\]").val("0");
$('#data\\[User\\]\\[notify_on_release_date_change\\]').slider('disable');
$('#data\\[User\\]\\[notify_on_release_date_change\\]').slider('refresh');

$("#data\\[User\\]\\[notify_available_for_purchase\\]").val("0");
$('#data\\[User\\]\\[notify_available_for_purchase\\]').slider('disable');
$('#data\\[User\\]\\[notify_available_for_purchase\\]').slider('refresh');

当我尝试用以下内容替换上面的内容来压缩代码时:

      $('[id^="data"]').val('0');
            $('[id^="data"]').slider('disable');
            $('[id^="data"]').slider('refresh'); 

我明白了:

uncaught exception: cannot call methods on slider prior to initialization; attempted to call method 'disable'

4 个答案:

答案 0 :(得分:5)

最近我遇到了非常类似的问题而且取代了

$('.sth').slider('disable');

使用:

$('.sth').attr('disabled', true);

帮助。也许这值得一试。

答案 1 :(得分:4)

我正在处理的项目中遇到同样的错误,修复是在使用任何方法之前初始化滑块,因为控制台错误几乎明确指出。

请参阅滑块上的jQuery Mobile Docs页面。 http://jquerymobile.com/test/docs/forms/slider/

选择所有滑块,调用slider()方法进行初始化,然后删除错误。

// Select all my inputs with the slider class, and initialize   
$('.slider').slider(); 

答案 2 :(得分:0)

建议您将input添加到[id^="data"]。 你可能有id = data- 某事的div或非滑块。

还尝试使用滑块将代码放在每个页面的pageinit事件中:

$('#page1,#page2,.sliderpage').on('pageinit', function() {
   $('input[id^=data]').val('0').slider('disabled', true).slider('refresh'); 
});

答案 3 :(得分:0)

我发现问题是我在代码的早期区域初始化了滑块,然后对$(myfield).slider()的引用不存在。值得注意的是,当类被用作选择器时,这不起作用。

我使用的解决方案是定义

window['#'+$(this).attr('id')] = $('#'+$(this).attr('id')).slider();

然后再参考......

window['#'+id].slider('enable');(或禁用)

希望能有所帮助。