Ris*_*kar 3 javascript jquery jquery-ui jquery-ui-slider
我写了类似下面的内容.点击ID为"PLUS"的div,我收到以下错误:
cannot call methods on slider prior to initialization attempted to call method 'value'
<div id="PLUS" class="PLUS"></div>
<script>
$(function() {
$(".slider").slider({
animate: true,
range: "min",
value: 18,
min: 18,
max: 70,
step: 1,
slide: function(event, ui) {
$("#slider-result").html(ui.value);
document.getElementById(findElement('ageId')).value = ui.value;
},
//this updates the hidden form field so we can submit the data using a form
change: function(event, ui) {
$('#hidden').attr('value', ui.value);
}
});
$(".PLUS").click(function() {
var value = $("#slider-result").slider("value"),
step = $("#slider-result").slider("option", "step");
$("#slider-result").slider("value", value + step);
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.
如果我们详细检查错误,你会发现它说你试图value在滑块插件初始化之前调用该方法.
原因:
实际上JavaScript是一种解释型语言,它不会等待第一个命令执行和完成.这就是为什么你 $(".slider").slider({和$(".PLUS").click(function() {线路同时运行并发生错误的原因.
解:
您可以在setTimeout此处将代码置于函数中,如下所示.
<script>
$(function() {
$(".slider").slider({
animate: true,
range: "min",
value: 18,
min: 18,
max: 70,
step: 1,
slide: function(event, ui) {
$("#slider-result").html(ui.value);
document.getElementById(findElement('ageId')).value = ui.value;
},
//this updates the hidden form field so we can submit the data using a form
change: function(event, ui) {
$('#hidden').attr('value', ui.value);
}
});
setTimeout(function(){
$(".PLUS").click(function() {
var value = $("#slider-result").slider("value"),
step = $("#slider-result").slider("option", "step");
$("#slider-result").slider("value", value + step);
});
},200); // 200 = 0.2 seconds = 200 miliseconds
});
</script>
Run Code Online (Sandbox Code Playgroud)
我希望这会对你/某人有所帮助.
问候,
| 归档时间: |
|
| 查看次数: |
10394 次 |
| 最近记录: |