3

现在我有一个网页功能,它会在除restrictArea 之外的所有窗口中触发。我已经让restrictArea 与主要内容重叠。我怎样才能指定这个区域不触发该功能?我试过e.preventDefault();了,但似乎不起作用。谢谢

$(document).swipe(function(){
    ...............
};


$('#flip').swiperight(function(e){
 e.stopPropagation();
 e.preventDefault();
});

更新:所有相关代码:

CSS:

*
{
 -webkit-user-select: none;         /* disable auto selection (select/selectall when long tap)*/
 -webkit-touch-callout: none;       /* disable magnifier*/
}
#flip
{       
position:absolute;
background-color:red;
z-index:10;
height: 100%;
width:60%;
left:20%;
}

js:

    $(document).swipeleft(function(){
        //check the case when popup and thumbnail slide bar is not exist
        if ($("#popup").length == '0' && parseInt($('#all_pages').css('left')) != '0'){  
            if (checkOrientation (orientation)== 'landscape'){
                    var pageLand = $('#book').turn('view');
                    pageLand = pageLand[1];
                    if (pageLand + 1 < countImage && pageLand != '0')
                        $('#book').turn('page', pageLand + 1);
            }
            else{
                    var pagePort = $('#book').turn('page');
                    if (pagePort + 1 < countImage && pagePort != '0')
                        $('#book').turn('page', pagePort + 1);
            }
        }
    });

    $(document).swiperight(function(){
        //check the case when popup and thumbnail slide bar is not exist
        if ($("#popup").length == '0' && parseInt($('#all_pages').css('left')) != '0'){ 
            if (checkOrientation (orientation)== 'landscape'){
                    var pageLand = $('#book').turn('view');
                    pageLand = pageLand[0];
                    if (pageLand - 1 > 0)
                        $('#book').turn('page', pageLand - 1);
            }
            else{
                    var pagePort = $('#book').turn('page');
                    if (pagePort - 1 > 0)
                        $('#book').turn('page', pagePort - 1);
            }
        }
    });


    $('#flip').swiperight(function(e){
      alert ('test');
      e.stopPropagation();
      e.preventDefault();
    });

    $('#flip').swipeleft(function(e){
      alert ('test');
      e.stopPropagation();
      e.preventDefault();
    });
4

3 回答 3

2

试试下面的代码。您需要停止事件从子节点到父文档的冒泡。

$('#restrictArea').swipe(function(e){
  e.stopPropagation();
  e.preventDefault();
});
于 2012-12-20T07:14:00.687 回答
0

$(document)不是你不能绑定 .swipe 一些DIV(可能是高度/宽度 100%)?然后,您只需使用比 the#restrictArea更高的值,就可以了。z-indexDIV

此外,在您的代码中,您尝试执行 preventDefault,但变量 e 未在您的函数中定义/传递。

于 2012-12-20T07:13:33.213 回答
0

在您的代码中,您没有正确关闭函数:

  $(document).swipe(function(){
   ...............
  });
 //^-----------you missed out this

  $('#restrictArea').swipe(function(e){
                   //---------------^-----------you missed out this
      e.preventDefault();
  });
//-^---------------------------------this too

jQuery 没有.swipe处理程序,但 jQuery mobile 有,所以你的代码应该是这样的:

$(document).bind("pageinit", function(event, data) {
    $('#restrictArea').swipe(function(e) {
        e.preventDefault();
    });
});
于 2012-12-20T07:24:27.643 回答