JQuery Slider值返回[object object]

时间:2014-01-07 15:15:45

标签: javascript jquery jquery-ui internet-explorer slider

我试图在加载后获得滑块的初始值。似乎在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()上加载了滑块。

1 个答案:

答案 0 :(得分:0)

您正在尝试从Slider本身获取滑块值,并且在滑动时没有使用<input>来存储其值。

逻辑是:

  • 从DIV创建滑块
  • 滑动滑块时,jQuery UI会计算该值并将其赋予<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" ));