“on”preventDefault
我在这里想念的是什么?
请注意:使用jQuery MOBILE
-
DEMO使用preventDefault
-
DEMO使用return false
如果我使用preventDefault页面加载就好像我只有链接而没有脚本,当我改为返回false(我总是习惯在普通的JS onclick事件处理程序上使用)时,它按预期工作。 我已经查看了其他post,并且都使用了.click,并建议使用preventDefault。
$(document).ready(function() { $("#leftdiv a").on("click",function(e) { $("#rightDiv").load(this.href); return false; // I was sure preventDefault would work }); });
HTML
e.preventDefault();
没用?
$('a').on("click",function(e){ //do something e.preventDefault(); });
e.preventDefault();
在代码的顶部或末尾无关紧要。 我猜还有方法e.stop()
。 但是你为什么不坚持return false;
什么时候它适合你?
来自jQuery移动文档:
取消元素默认点击行为
应用程序可以在vclick事件上调用preventDefault()来取消元素的默认单击行为。 在基于鼠标的设备上,在vclick事件上调用preventDefault()等同于在冒泡事件阶段对真实点击事件调用preventDefault()。 在基于触摸的设备上,由于实际的点击事件在调度vclick事件后大约300ms被调度,因此它有点复杂。 对于触摸设备,在vclick事件上调用preventDefault()会触发vmouse插件中的一些代码,这些代码会尝试捕获浏览器在捕获事件阶段调度的下一个单击事件,并调用preventDefault()和stopPropagation()on它。 如上面的警告所述,有时很难将触摸事件与其相应的鼠标事件进行匹配,因为目标可能不同。 出于这个原因,vmouse插件也会回退到尝试通过坐标识别相应的点击事件。 仍然存在目标和坐标识别都失败的情况,这导致分派事件并且触发元素的默认操作,或者在内容被移位或替换的情况下,触发对不同元素的点击。 如果这种情况经常发生在给定的元素/控件上,我们建议您使用click来触发您的操作。
function() { return false; } // IS EQUAL TO function(e) { e.preventDefault(); e.stopPropagation(); }
资料来源: http : //css-tricks.com/return-false-and-prevent-default/
似乎也不支持.on()
也不支持document.ready
资料来源: http : //jquerymobile.com/test/docs/api/events.html