2
我有一个颜色选择器,应该允许一次选择两种不同的颜色;它应该像这样工作。 触摸第一种颜色 - >拖动到第二种颜色 - >释放第二种颜色的手指。 现在的问题是,当我从屏幕上抬起手指时,触发事件触发第一种颜色。不过,它可以很好地工作。touchstart上的一个元素,拖动,touchend另一个元素
$('.single-color').on('mousedown touchstart', function(e) {
e.preventDefault();
var index = $(this).attr('data-index');
$('#color1').val(index);
$('#color1').attr('data-color', $(this).css('background-color'));
console.log('touchstart - index: ' + $(this).attr('data-index'));
});
$('.single-color').on('mouseup touchend', function(e) {
e.preventDefault();
var index = $(this).attr('data-index');
$('#color2').val(index);
$('#color2').attr('data-color', $(this).css('background-color'));
console.log('touchend - index: ' + $(this).attr('data-index'));
});
.colors {
list-style: none;
margin: 0;
padding: 0;
overflow: hidden;
}
.single-color {
height: 50px;
width: calc(50% - 10px);
margin: 0 5px 5px 5px;
float: left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="colors">
\t \t \t \t \t \t
<li class="single-color" data-color="#4DB023" data-index="0" style="background-color: #4DB023">
</li>
<li class="single-color" data-color="#1E6B3D" data-index="1" style="background-color: #1E6B3D">
</li>
<li class="single-color" data-color="#233778" data-index="2" style="background-color: #233778">
</li>
<li class="single-color" data-color="#3098FF" data-index="3" style="background-color: #3098FF">
</li>
<li class="single-color" data-color="#FF0000" data-index="4" style="background-color: #FF0000">
</li>
<li class="single-color" data-color="#38889C" data-index="5" style="background-color: #38889C">
</li>
<li class="single-color" data-color="#483063" data-index="6" style="background-color: #483063">
</li>
</ul>
复制看看上面的代码中的问题,设置在Chrome Resposive工具视口iPhone6所以它模拟触摸。