代码之家  ›  专栏  ›  技术社区  ›  Phil.Wheeler

无法从jquery UI滑块范围获取索引

  •  2
  • Phil.Wheeler  · 技术社区  · 15 年前

    我非常想从多个滑块的集合中得到一个简单的索引。HTML如下:

    <div id="left-values" class="line">
        <span id="l1" style="padding: 0 1.8em;">0</span>
        <span id="l2" style="padding: 0 1.8em;">0</span>
        <span id="l3" style="padding: 0 1.8em;">0</span>
        <span id="l4" style="padding: 0 1.8em;">0</span>
        <span id="l5" style="padding: 0 1.8em;">0</span>
        <span id="l6" style="padding: 0 1.8em;">0</span>
        <span id="l7" style="padding: 0 1.8em;">0</span>
        <span id="l8" style="padding: 0 1.8em;">0</span>
    </div>
    

    jquery代码是:

        // setup audiometry sliders
        $("#eq > span").each(function (e) {
            // read initial values from markup and remove that
            var value = parseInt($(this).text());
            // var index = $(this).index; <- this didn't work.
    
            $(this).empty();
            $(this).slider({
                value: value,
                slide: function (event, ui) {
                    //console.log($(this).attr('id')); <- neither did this.
                    //console.log(index);
                    $('#left-values span:first').text(ui.value);
                }
            })
        });
    

    问题在于,jquery ui(在创建滑块时)用自己的标记替换了现有的HTML。这包括任何ID值,无论出于什么原因,我也无法获取给定滑块到曲面的索引。所以我没什么主意了。

    2 回复  |  直到 15 年前
        1
  •  2
  •   karim79    15 年前

    您可以这样获得索引:

    $("#eq > span").each(function (index, Element) {
        alert(index);
        ...
    

    看见 http://api.jquery.com/each/

        2
  •  1
  •   Nick Craver    15 年前

    你有什么用,也许你还有别的事要做。下面是一个独立的示例,请注意控制台的输出: http://jsfiddle.net/FBh3a/1/

    $("#eq > span").each(function (e) {
        var value = parseInt($(this).text());    
        $(this).empty();
        $(this).slider({
            value: value,
            min: -10,
            max: 10,
            slide: function (event, ui) {
              console.log($(this).attr('id')); //<- works here, outputs l1, l2, etc
              console.log($(this).index()); //outputs 0, 1 .... 7 (0-based index)
            }
        });
    });​