jQuery Mobile未响应或未触发HTML5 iPhone应用程序(Safari)的点击

jQuery Mobile未响应或未触发HTML5 iPhone应用程序(Safari)的点击,jquery,iphone,ios,html,jquery-mobile,Jquery,Iphone,Ios,Html,Jquery Mobile,我们正在使用jQuery Mobile为iPhone HTML5 web应用程序处理手势和触摸事件。不幸的是,轻敲几下,它似乎就不起作用了。我们正在使用最新的稳定版本jqm1.3.2,以及jquery1.10.1 复制: 1) 使用iPhone或从桌面访问www.tekiki.com/dandy/dandy 2) 向左滑动以显示类别菜单 3) 点击游戏类别(不是所有游戏) 4) 游戏渲染后,点击金融类 此时,忽略对其他类别的点击。JQM似乎没有触发点击事件,因为下面相关代码中的断点没有被命中 代

我们正在使用jQuery Mobile为iPhone HTML5 web应用程序处理手势和触摸事件。不幸的是,轻敲几下,它似乎就不起作用了。我们正在使用最新的稳定版本jqm1.3.2,以及jquery1.10.1

复制:

1) 使用iPhone或从桌面访问www.tekiki.com/dandy/dandy

2) 向左滑动以显示类别菜单

3) 点击游戏类别(不是所有游戏

4) 游戏渲染后,点击金融类

此时,忽略对其他类别的点击。JQM似乎没有触发点击事件,因为下面相关代码中的断点没有被命中

代码段:

// Bind what happens when user taps on category
$( '#templates .category_box' ).on( 'tap', function( ev ) {     
    // Prevent double taps
    ev.preventDefault();

    // Set category picked history
    CHOSEN_CATEGORY_ID = $(this).attr('itunes_id');

    // Show page
    p_change_page( '#category_page' );
});

将事件绑定到元素时,元素应该存在于DOM中。即使是复制/克隆的元素也被认为是动态的,并且将事件绑定到它们的方式也是动态的

$(document).on('event', '.dynamic', function () {
 // code
});
还是这样

$('.static_parent').on('event', '.dynamic', function () {
 // code
});

将事件绑定到元素时,元素应该存在于DOM中。即使是复制/克隆的元素也被认为是动态的,并且将事件绑定到它们的方式也是动态的

$(document).on('event', '.dynamic', function () {
 // code
});
还是这样

$('.static_parent').on('event', '.dynamic', function () {
 // code
});

请尝试单击
vclick
。是否动态附加任何项目?如果是,请使用此
$(文档)。在('tap','#templates.category_box',function(ev){
@Omar)上,您可以将您的评论作为答案发布吗?它有效(经过一些修改),但我们为什么需要它?我们将事件绑定到模板,然后深度复制模板(包括事件)创建动态元素时。是否应该深度复制已绑定到tap事件的模板元素?请改为尝试
vclick
。是否动态附加任何项目?如果是,请使用此
$(文档)。在('tap','#templates.category_box',函数(ev){
@Omar)上,是否可以将您的评论作为答案发布?它起作用了(经过一些修改)但是为什么我们需要这个呢?我们将事件绑定到模板,然后深度复制模板(包括事件)创建动态元素时。深度复制已绑定到tap事件的模板元素不应该起作用吗?谢谢,@omar。有任何关于原始方法失败的线索吗?根据文档,使用true作为参数的克隆应该从模板项复制事件。如果这样做有效,这不是一种更有效的方法吗,因为只有JQM需要深度复制事件,而不需要监视动态元素?@Crashalot我认为这取决于页面事件(pageinit、pageshow、pagebeforeshow等)。您可以绑定其他事件。放置一个警报或控制台日志,查看上面的修复是否触发两次,并将它们绑定到任何页面事件。您的修复肯定有效(只需稍作修改),只是好奇为什么我们最初的方法失败了。令人困惑的是,它只适用于几个点击(即使在动态创建元素之后)然后失败。@Crashalot是在同一个克隆元素上失败,还是在多次点击后在不同的元素上失败?点击时,您是否克隆了点击的元素?不,我们不会在点击时克隆点击的元素。只有在第一次创建元素时才克隆。所有类别都是同一模板的克隆版本。谢谢,@omar。有任何线索说明为什么最初的批准ach失败?根据文档,使用true作为参数的克隆应该从模板项复制事件。如果这样做有效,这不是一种更有效的方法,因为JQM只需要深度复制事件,而不需要监视动态元素吗?@Crashalot我认为这取决于页面事件(pageinit、pageshow、pagebeforeshow等)您可以绑定其他事件。放置一个警报或控制台日志,看看上面我的修复程序是否触发了两次,并将它们绑定到任何页面事件。您的修复程序肯定有效(只需稍加修改),只是好奇我们最初的方法为何失败。令人困惑的是,它只需点击几下即可工作(即使在动态创建元素之后)然后失败。@Crashalot在多次点击后是否在同一克隆元素或不同的元素上失败?点击时,是否克隆点击的元素?不,我们不会在点击时克隆点击的元素。仅在第一次创建元素时。所有类别都是同一模板的克隆版本。