需要jquery语法,以便在触摸另一个项目时使slideToggle消失 - 移动设备

时间:2012-08-07 02:49:56

标签: jquery mobile-safari

编辑1
这是关于触摸事件。目的是通过一次触摸(在移动设备上)采取行动 - >伸展,第二次触摸收缩。触摸其他项目 - >它延伸和扩展以前的收回。

这就是问题:iPad 4.3.3效果很好。 iPhone 5.1& 6.0,& Android 4 - 第二触摸收缩和扩展。不是预期的效果。查看example here感谢您的关注。

这是jQuery或移动操作系统中的错误吗?

$(document).ready(function () {   
    if((navigator.userAgent.match(/iPhone|iPod|iPad|Android/i))) {
        $('#nav li').click(function(){
            // attach a click event listener to provoke iPhone/iPod/iPad's hover event
            // Amended the next 3 lines 
            var $this_li = $(this);  
            $('#nav li ul').slideUp(function() {
                $('ul', $this_li).slideDown();
            });
        });
    } else {
        $('#nav li').hover(
            function () {
                //show its submenu
                $('ul', this).slideDown(200);
            }, 
            function () {
                //hide its submenu
                $('ul', this).slideUp(200);         
            }
        ); 
    }  
});

2 个答案:

答案 0 :(得分:0)

首先撤回全部 li,然后滑动在slideup的回调中点击的那个。这样,点击后的li会在当前li缩回后向下滑动。

$('#nav li').click(function(){  
    var $this_li = $(this);  
    $('#nav li ul').slideUp(function() {
        $('ul', $this_li).slideDown();
    });
});
} else {

答案 1 :(得分:0)

尝试:

var test = 0;
$('#nav li').click(function(){
    if(test == 0) {
        $('ul', this).slideDown();
        test = 1;
    } else {
        $('ul', this).slideUp();
        test = 0;
    }
});

这是你正在谈论的可以测试的开/关开关