当我在 HTML 代码中创建一个 div 时,然后在其上绑定触摸事件 - 一切都很完美。但是当我像这样创建 div 时:$('<div ...></div>')
然后绑定的触摸事件将不起作用。iPad 和 Android 设备上的行为相同。
这是重现问题的代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript" src="libs/jquery-1.7.2.js"></script>
<script language="JavaScript">
$(function() {
$('#a').bind('touchstart', function(e) { alert('It works!'); });
var b = $('<div style="width:100px; height:100px; background-color:red;" id="b" ></div>');
b.bind('touchstart', function(e) { alert('Does not work :-('); });
$('body').append(b);
});
</script>
</head>
<body>
<div style="width:100px; height:100px; background-color:green;" id="a" ></div>
</body>
jsfiddle 的示例:http: //jsfiddle.net/EqJDA/11/
我四处寻找,发现如果你在同一个元素上绑定任何鼠标事件和触摸事件,那么触摸事件将被忽略。我认为 jQuery 添加了一些隐藏的鼠标事件并为 div "b" 列出了所有这些事件,但只有一个触摸事件。
更新:如果在附加到 DOM 的元素之后绑定事件 - 一切都很好。但是我无法预测元素何时会被附加到 DOM 并且必须在它发生之前构造它并添加事件。
那么,有谁知道为什么会发生这种情况?有什么解决方法吗?谢谢。