禁用特定div上的滑动

时间:2013-04-23 22:53:55

标签: jquery jquery-mobile mobile

有了这个jQuery Mobile 1.9.1代码,用来在用户向右或向左滑动时显示侧面板......

$(document).on("pageinit",".ui-page",function(){

    var $page=$(this);
    $page.on("swipeleft swiperight",function(e){
        if($page.jqmData("panel")!=="open"){
            if(e.type==="swiperight"){
                $page.find("#menu").panel("open");
            }else if(e.type==="swipeleft"){
                $page.find("#menu2").panel("open");
            }
        }
    });
});

使用具有滑动功能的图像滑块时会出现问题。当我向右滑动时滑块div内部会切换到下一张照片并打开面板...

我只是尝试这样做:

    $('#full-width-slider').swipe(function(e){
        e.stopPropagation();
        e.preventDefault();
    });

但它根本不起作用。

有没有办法在div#full-width-slider中禁用jQuery Mobile原生幻灯片功能?

提前致谢。

2 个答案:

答案 0 :(得分:4)

.on('swipeleft swiperight', function(e){

而不是

.swipe(function(e){

虽然我对这个答案没有百分之百的信心,但是感觉试验表明代码仍然存在问题,你可能需要对原始元素进行健全性检查,例如,

if($.inArray('full-width-slider', $.trim($(e.target).prop('id')).split(' ')) > -1){
    //full with slider is the target, so return out 
}

答案 1 :(得分:2)

我认为你正在寻找这个:

event.stopImmediatePropagation();

这应该可以阻止滑动冒泡。

您的代码

$('#full-width-slider').swipe(function(e){
    e.stopImmediatePropagation();
    e.preventDefault();
});