iOS5上的jQuery事件

iOS5上的jQuery事件,jquery,ios,touchstart,Jquery,Ios,Touchstart,我对jQuery 1.6.4、iOS 5和touchstart/touchend事件的注册(显然如标题中所述)有问题 以下面的代码为例: <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8" /> <script type="text/javascript" src="mmpa/jquery-1.6.4.min.js"></script>

我对jQuery 1.6.4、iOS 5和touchstart/touchend事件的注册(显然如标题中所述)有问题

以下面的代码为例:

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="utf-8" />
    <script type="text/javascript" src="mmpa/jquery-1.6.4.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            var $body = $('body');
            $('<button>').html('test jQuery').bind('touchstart', function() { alert('touchstart'); }).appendTo($body);
        });
    </script>
</head>
<body>
    <button ontouchstart="alert('touchstart');">test pure JS</button>
</body>
</html>

$(文档).ready(函数(){
变量$body=$('body');
$('').html('test jQuery').bind('touchstart',function(){alert('touchstart');}).appendTo($body);
});
测试纯JS
“纯JS”按钮在iOS 4.3和iOS 5中显示警报,但“jQuery”按钮仅在iOS 4.3中有效。 在iPad/iPhone模拟器上测试,4.3和5;还测试了真实的iPhone4.3、iPhone5.0和iPad5.0。 如果我用
或者甚至是简单的
而不是
,我也会有同样的反应


我认为这是与jQuery相关的问题吗?

苹果开发人员论坛上的一个家伙回答:只有在元素添加到DOM之后,我才需要bind(),如下所示:

var btn = $('<a>').html('test jQuery').appendTo($body);
btn.bind('touchstart', function(e) { alert('touchstart'); });
var btn=$('').html('test jQuery').appendTo($body);
bind('touchstart',函数(e){alert('touchstart');});

不要使用bind('touchstart')和ontouchstart=“”。使用其中一个,不要使用内联javascript。这是一个概念证明,证明了内联JS在jQuery不起作用的情况下可以工作。当然,我从来没有在真正的代码中使用过内联JS。我能够在jQ 1.5.2和click事件中产生这个错误,所以也许你应该将标题修改为类似“iOS 5上的jQuery事件”,如果你使用live()而不是bind(),会发生什么?有没有解释为什么它在iOS 5中停止工作?