2013-01-16 68 views
1

我使用此代码触摸禁用和启用触摸:jQuery的:禁用和启用与touchmove

jQuery(document).ready(function(){ 

jQuery("body").on("touchmove", false); 

jQuery('button').click(function(){ 
    jQuery("body").on("touchmove", true); 
}); 

}); 

功能做工精细禁用触控,但后点击按钮触摸无法实现。

什么是错误的代码?

+1

什么回调你希望在点击按钮后执行? – davids

回答

10

有什么不对,只是你不通过on要求的论点。你应该传递一个函数(事件处理函数)而不仅仅是一个布尔值。

解除绑定然后重新绑定的最简单方法是在某个地方使用布尔值并在处理程序中对其进行测试。例如:

myapp = {active: true}; // change this boolean 
jQuery("body").on("touchmove", function(e) { 
    if (myapp.active) { // change myapp.active 
     // do things 
    } 
}); 

如果你想明确取消绑定强似falseon,使用off。通过false是一个未记录的技巧,可能会打破未来的版本。

offdocumentation还包含绑定的另一种方式的例子/解除绑定上点击一个功能:

function aClick() { 
    $("div").show().fadeOut("slow"); 
} 
$("#bind").click(function() { 
    $("body").on("click", "#theone", aClick) 
    .find("#theone").text("Can Click!"); 
}); 
$("#unbind").click(function() { 
    $("body").off("click", "#theone", aClick) 
    .find("#theone").text("Does nothing..."); 
}); 
4

使用bind()unbind()

试试这个

jQuery('body').bind('touchmove', function(e){e.preventDefault()}); 

jQuery('button').click(function(){ 
    jQuery('body').unbind('touchmove'); 
    }); 
+2

这不会有什么区别,因为jQuery内部使用'on()'来bind()事件。参考号:https://github.com/jquery/jquery/blob/1.7/src/event.js#L965 – LuudJacobs