我试图在加载后获得滑块的初始值。似乎在IE9 $('#slideramount').slider('option','value')
中随机返回[object object]而不是实际值。
我正在使用jquery 1.8.0和jquery-ui 1.9.1
代码:
<div id="slideramount" class="slider"></div>
$("#slideramount").slider({
range: "max",
min: 100,
max: 1000,
step: 50,
value: 1000,
slide: function (event, ui) {
//do stuff
}
});
//sometimes returns the value, other times returns [object object]
console.log($('#slideramount').slider('option','value'));
似乎只有50%的时间才在IE9中发生。 Chome / FF / IE10工作正常。
我在IE9浏览器/文档模式下运行IE10测试IE9,不确定是否会捏造结果?
看起来滑块在返回[对象对象]时无法正确加载,但我不确定原因。我已经检查过以确保jqueryui已加载等等。我的想法已经不多了。
更新
我已更改代码,以便在$(document).ready()
上创建滑块,然后尝试在console.log($("#slideramount").slider("value"));
上检索值$(window).load()
。
当它失败时,我得到一个无法在初始化之前调用滑块上的方法,所以它就像滑块不能正确创建一样。不确定原因,但有时在IE9中仍然有效。
FIXED:
所以我终于设法解决了它(这很愚蠢)。
我在自己的文件中有javascript,所以HTML看起来像这样:
<script src="/Scripts/sliders.js"></script>
<div id="slideramount" class="slider></div>
我将here读到“只需在文档末尾添加您的脚本”,因此我将脚本移动到所有相关的HTML下,并且滑块将始终加载。我不敢相信我之前没想过......
脚本文件中必须有js在加载之前引用某些DOM元素,即使我在$(document).ready()
上加载了滑块。
答案 0 :(得分:0)
您正在尝试从Slider本身获取滑块值,并且在滑动时没有使用<input>
来存储其值。
逻辑是:
<input>
<input>
而不是滑块<div>
根据文档,您的代码应如下所示:
<强> HTML 强>
<p>
<input type="text" id="amount" style="border:0; color:#f6931f; font-weight:bold;">
</p>
<div id="a_slider"></div>
<强>的jQuery 强>
// instantiate the slider widget to the <div> and set configuration options
$("#a_slider").slider({
range: "max",
min: 100,
max: 1000,
step: 50,
value: 1000, // this is an option so it sets the position of the slider before it gets displayed on-screen
slide: function (event, ui) {
// upon sliding store the value
$( "#amount" ).val( ui.value );
// fire off the console every time a slide is made
console.log($( "#amount" ).val());
// OR you can go through the widget and have it tell you the value
console.log($( "#a_slider" ).slider( "value" ));
}
});
// Use it here to get the value after loading the widget
// ask the instantiated slider widget to tell you it's current value
alert($( "#a_slider" ).slider( "value" ));