我希望通过点击图像动态改变滑块的值,例如当我点击第一个图像时水平滑块的值应为1,同样想到第二个图像,我的解决方案是将输入隐藏到保存图像的位置并将此值(positionimgvalue)放在水平滑块的值中,但它不起作用
这是我的代码:
<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>
$('.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') );
感谢帮助
答案 0 :(得分:2)
我不确定你想要什么。可能是您想要在单击图像时动态更改滑块。我只添加了一行用于实际更改值:
$('#slider').slider('value', value);// changing value of slider
Updated DEMO请参阅单击图像时更改滑块值
答案 1 :(得分:1)
你可以为每个li使用index()而不是attr('alt')
$('.teintestyle li').click(function(i){
var value = $(this).index();
$('#slider-value').text(value);
$('#slider').slider('value', value);
});
答案 2 :(得分:0)
请注意以下小提琴回答 - 尽管它解决了您的问题 - 绝对不是这样做的方法。
使用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
});
答案 3 :(得分:-1)
添加
$('#slider-value').text(value);
之后
$( "input[name='value']" ).val(value);
输入是隐藏的,当然你看不到它。