以下代码块有效:
$("#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'
答案 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');
(或禁用)
希望能有所帮助。