0

我有一个文档,我通过使用禁用了页面上的滚动

$('body').bind('touchmove', false);

现在我在单击按钮后将页面动态加载到 div 中......

$('#myContentPage').load('details.html #myCOntentPage');

加载完成后,我只想从 div #myContentPage 取消绑定“touchmove”。我试过了

$('#myContentPage').bind('touchmove', true);页面加载后,但它似乎不起作用。

加载前的 HTML 结构

<body>
    <div id="header"/>
    <div id="details"/>
    <div id="myContentPage" />
</body>

加载后的 HTML 结构

<body>
    <div id="header"/>
    <div id="details"/>
    <div id="myContentPage" >
        <div ... />
        <div.... />
    </div>
</body>
4

4 回答 4

0

问题是您无法分离touchmove事件回调表单'#myContentPage',因为它已附加到他的父级<body>,修复它的最佳方法是附加一个新的处理程序,#myContentPage这将停止<body>取消事件的传播。

$('#myContentPage').load('details.html #myCOntentPage', function() {
    $('#myContentPage').bind('touchmove', function(event){
        event.stopPropagation() ;
    }); 
});

如果这没有帮助(出于某种未知原因),试试这个:

$('#myContentPage').load('details.html #myCOntentPage', function() {
    $('body').unbind('touchmove');
    $('body').on('touchmove', ':not(#myContentPage)', function(){
        return false;
    });
});
于 2012-05-07T07:44:16.963 回答
0
 $('#myContentPage').off('touchmove'); // if you bind event using `on()`

或者

 $('#myContentPage').unbind('touchmove');

所以,

$('#myContentPage').load('details.html #myCOntentPage', function() {
    $('#myContentPage').off('touchmove'); 
});
于 2012-05-07T07:46:57.733 回答
0

加载新页面后,您可以使用它来取消绑定之前附加的事件

$('#myContentPage').unbind('touchmove'); 
于 2012-05-07T07:47:49.447 回答
0

尝试:

$('body').bind('touchmove', function(ev){
  if ( ev.target.id != "myContentPage"){
    return false;
  }
});

代替: $('body').bind('touchmove', false);

于 2012-05-07T07:52:19.630 回答