正如标题所说。我想在div中列出div元素。我希望能够上下滚动列表,当列表不再滚动时,我希望能够点击列出的元素做某事。我无法弄清楚如何做到这一点。
每当用户触摸div时都会执行touchmove事件,即使div正在滚动。我不知道如何让程序知道div不再滚动,所以元素的下一次触摸将触发不可滚动的事件......
编辑:
到目前为止,我所拥有的是......但这是一个快速的“修复”,它不能按预期工作。例如,如果你快速上下滚动,那么div会认为你按下了其中一个元素..exerciseWrapper是滚动div中的元素。每个元素都包含在exerciseWrapper中。
$('.exerciseWrapper').on('touchstart',function(){
touchstart=true;
setTimeout(function(){
touchstart=false;
}, 100);
});
$('.exerciseWrapper').on('touchend',function(){
if(touchstart)
{
$('.exerciseWrapper').not(this).css('border-color','black');
$(this).css('border-color','orange');
}
});
答案 0 :(得分:0)
好的,所以我终于想出了这个。为什么我无法解决这个问题的原因,因为我无法得到其他事件然后eventstart和事件结束工作...在写作的时候我仍然无法使eventcancel和eventleave等其他事件发挥作用。然而,eventmove工作,我使用此事件解决了问题。当移动手指时,eventmove会不断更新其链接的元素。然后我有一个touchmove变量,如果我正在滚动我的div(使用touchmove事件),它将一直为真。当我停止移动时,我可以再次clik on selected元素并使用正常的eventstart事件..这是我的工作代码:
var touchmove=false;
function AddExercisesEvents()
{
$('#exerciseMenu').on('touchmove',function(){
touchstart=true;
$('h1').text("move");
});
$('.exerciseWrapper').on('touchend mouseup',function(event){
event.stopPropagation();
event.preventDefault();
// $('.exerciseWrapper').off();
if(event.handled !== true)
{
touchstart=false;
//ENTERING editExercise Menu..!
if(!touchstart)
{
//insert magic here
alert($(this).attr('id'));
}
}
return false;
});
}