0

我对jQuery UI Slider小部件有疑问。我打算做的是,在每个向上计数的值上,滑块都会在 div 中附加一个图像:

$("#divOne").slider({
        range: "min",
        min: 1,
        max: 10,

       slide: function (event, ui) {
           console.log(ui.value);

           if(ui.value == 1) {
              $('#divOne').append('<img class="linkimg" src="img/link/zwei.png">');
           }
           if(ui.value == 2) {
              $('#divOne').append('<img class="linkimg" src="img/link/drei.png">');
           }
           if(ui.value == 3) {
              $('#divOne').append('<img class="linkimg" src="img/link/eins.png">');
                     }
       },

           change: function (event, ui) {
              //alert('Stopped at ' + ui.value);
           }  
});

到目前为止效果很好。

问题是,如果我要减计数,我想删除元素,但是如果我越过一个数字,它当然会再次附加,所以我想比较 if 语句中的值是错误的。

你们中有人有提示吗?干杯

编辑:我制作了一张图片来展示我想要做什么点击

4

2 回答 2

1

首先更改图像名称以匹配值。例如,1.png2.png。那么你也能:

var i, maxVal = ui.value, html='';
for (i = 1; i <= maxVal; i += 1) {
  html += '<img src="img/' + i + '.png';
}
$('#divOne').html(html);

编辑:但一般来说,更好的方法是将所有图像放在容器中,然后构造一个样式表,将匹配值的类映射到适当的状态。例如:

<div class="score[X]"> <!-- where `[X]` will be the actual value of the ui.value -->
   <img class="val1" src="1.png">
   <img class="val2" src="2.png">
   <img class="val3" src="3.png">
</div>

在 CSS 中:

.score1 .val2 { display: none; }
.score1 .val3 { display: none; }
....

或上述的一些其他变体。

编辑:

使用稍微不同的 CSS 方法的示例小提琴:http: //jsfiddle.net/gwQAW/

编辑2:

以及带有 HTML5 滑块的版本:http: //jsfiddle.net/gwQAW/2/(抱歉,现在没有时间使用 jQuery UI)

于 2013-11-03T15:58:26.217 回答
1

假设将所有图像放在 html 中

/* cache collection of images*/
var $images= $("#divOne img")
$("#divOne").slider({            

       slide:function(e,ui){
            if( ui.value !== $images.filter(':visible').length){
                $images.hide().slice( 0, ui.value).show();
            }
       }

});

这样做是轨道号可见与滑块值....如果它们不匹配,它会隐藏所有并显示与滑块匹配的那些。

如果您有大量...这应该升级为跟踪滑块的方向,并且只修改受影响的图像以提高性能

于 2013-11-03T16:37:20.823 回答