通过单击图像更改滑块的值

Changing value of slider by clicking on images

我想通过点击图像使滑块的值动态变化,例如,当我点击第一张图像时,水平滑块的值应该是 1,第二张图像也是如此,我的解决方案是进行输入隐藏以保存图像的位置并将此值 (positionimgvalue) 放在水平滑块的值中但它不起作用

这是我的代码:

HTML 代码:

<h1>Changing value of slider by clicking on images </h1>
<div id="slider"></div>

<p>Your slider has a value of <span id="slider-value"></span></p>
<input type=hidden name=value value="">
 <ul class="teintestyle">
<li>
 <img border="0" src="http://lorempixel.com/100/81/" width="100" height="81" alt="1" />
</li>

<li>
<img border="0" src="http://lorempixel.com/g/400/200" width="100" height="81" alt="2" />
</li>

<li>
<img border="0" src="http://lorempixel.com/400/200/sports" width="100" height="81" alt="3" />
</li>
<li>
<img border="0" src="http://lorempixel.com/400/200/sports/Dummy-Text" width="100" height="81" alt="4" />

</li>
</ul>

JS代码:

 $('.teintestyle li').click(function(){

          var value = ( $(this).find('img').attr('alt'));


         $( "input[name='value']" ).val(value);


     });
var positionimgvalue =  $( "input[name='value']" ).val();
$("#slider").slider(
{
            value:positionimgvalue,
            min: 0,
            max: 4,
            step: 1,
            slide: function( event, ui ) {
                $( "#slider-value" ).html( ui.value );
            }
}
);

$( "#slider-value" ).html(  $('#slider').slider('value') );

jsfiddle :

jsfiddle

感谢帮助

我不确定你想要什么。可能您想在单击图像时动态更改滑块。我只添加了一行以实用地更改值:

$('#slider').slider('value', value);// changing value of slider

Updated DEMO 单击图像时查看滑块值的变化

请注意下面的 fiddle 回答 - 虽然它解决了你的问题 - 绝对不是这样做的方法。

使用 alt 来存储值是不正确的,因为 alt 标签用于帮助描述图像的内容。

而是查找数据属性,因为这是它们的设计目的。

 $('.teintestyle li').click(function(){

      var val1 = ( $(this).find('img').attr('alt'));


 $("#slider").slider({'value':val1}); // set the value of the slider
 $( "#slider-value" ).html(  $('#slider').slider('value') ); //update the text
 });

Fiddle Demo

您可以为每个 li 使用 index() 而不是获取 attr('alt')

 $('.teintestyle li').click(function(i){   
         var value = $(this).index();
         $('#slider-value').text(value);
         $('#slider').slider('value', value);
     });

DEMO

只需添加

$('#slider-value').text(value);  

之后
 $( "input[name='value']" ).val(value);  

输入是隐藏的,你当然看不到。