所有jQuery移动事件触发两次
All jQuery mobile events firing twice
在我的索引页上有一个非常简单的用例。
<script src="js/jquery-min.js"></script>
<script src="js/jquery-mobile.js"></script>
<script type="text/javascript" src="cordova-2.2.0.js"></script>
<script>
$("body").on("swipeleft", function(event) {
alert('hello');
/*window.location.href = "html/first.html";*/
});
</script>
由于某种原因,这个事件触发了2次。现在我确定我没有在body标签上绑定另一个事件,因为这是第一页。我也尝试过其他简单的事件,比如touchstart等。他们都开了两枪。我做错了什么?
更新:
我用以下方法修改了我标记为正确的答案,并且它有效。此页上的事件不会触发两次。
<head>
<script type="text/javascript" src="js/jquery-min.js"></script>
<script>
$(document).bind("mobileinit", function() {
$.mobile.autoInitializePage = false;
$.mobile.defaultPageTransition = 'none';
$.mobile.touchOverflowEnabled = false;
$.mobile.defaultDialogTransition = 'none';
$.mobile.loadingMessage = '' ;
});
</script>
<script type="text/javascript" src="js/jquery-mobile.js"></script>
<script type="text/javascript" src="cordova-2.2.0.js"></script>
</head>
有几种方法可以避免这个问题。就像CodeJack告诉你这是一个已知的问题,但它不是一个错误,主要是因为jQM处理页面的独特方式。
-
最简单的方法是在再次绑定事件之前取消绑定,像这样:
$("body").off().on("swipeleft", function(event) { alert('hello'); /*window.location.href = "html/first.html";*/ });
如果你有其他事件绑定到同一个对象,使用这个:
$("body").off("swipeleft").on("swipeleft", function(event) { alert('hello'); /*window.location.href = "html/first.html";*/ });
-
有一个替代使用事件绑定/解绑定,活/死和开/关。jQuery事件过滤器可以用来识别事件是否已经被绑定,而不是在您再次绑定它之前使用解除绑定。不要忘记从下面的链接下载它(它不是jQM的标准部分)。
http://www.codenothing.com/archives/2009/event-filter/这是我的用法示例:
$('#carousel div:Event(!click)').each(function(){ //If click is not bind to #carousel div do something });
我使用每个,因为我的carouseldiv有许多内部块,但原则是相同的。如果#carousel内部div元素没有click event,添加事件。在你的例子中,这将防止多个事件绑定。
其他解决方案可以在这里找到。
您应该尝试使用document ready event将事件附加到body。此外,您可能希望仅将事件附加一次到body。
$(document).ready(function(){
$("body").off().on("swipeleft", function(event) {
alert('hello');
});
});
如果你有其他事件绑定到同一个对象,使用这个:
$(document).ready(function(){
$("body").off("swipeleft").on("swipeleft", function(event) {
alert('hello');
});
});
这是已知的问题…我发现它通过移动<head>
标签内的js代码来避免…我不知道原因…但这避免了问题…
相关文章:
- Jquery点击事件必须点击两次
- 防止双击执行两次jQuery post请求
- 单击jQuery会激发两次
- 为什么jQuery下拉列表需要单击两次
- 我的jQuery加载请求是否被调用了两次
- $().单击需要按两次.Jquery JSP
- JQuery脚本没有'Don’我不能工作两次
- jquery on触发器按键事件两次
- jQuery 方法调用了两次
- Rails-jQuery 为什么我必须单击两次才能显示 jQuery 效果
- 为什么要声明两次 jQuery
- jQuery切换了Firefox中所需的两次点击
- 如何使用 jQuery 交换网页中的两个图像(连续两次点击)
- jQuery 每个循环返回数据两次
- 更改jquery需要点击两次
- 发送前jQuery!确认警报两次
- JQuery定位:我可以滚动到正确的位置一次,但不能滚动两次
- 我必须点击两次才能使用jQuery激活函数
- Parameters .replace()两次jQuery插件不起作用
- 点击复选框时触发两次jQuery点击事件