jQuery Mobile 可折叠“展开”事件未在 Cordova 应用程序中触发

Posted

技术标签:

【中文标题】jQuery Mobile 可折叠“展开”事件未在 Cordova 应用程序中触发【英文标题】:jQuery Mobile collapsible 'expand' event not firing in Cordova app 【发布时间】:2017-03-15 11:12:17 【问题描述】:

我有一个使用 jQuery Mobile 1.4.5 版构建的 Cordova 应用程序

在这个应用程序中有一个页面,其中有 4 个可折叠项,其中包含多个可折叠项。

每次展开嵌套的可折叠项时,我都需要触发一段代码。为此,我使用了一个 CSS 类并为这些可折叠对象绑定了一个展开事件侦听器。

当我用它制作一个 jsFiddle 时,但在应用程序上它不会运行并且不会在断点处停止(使用 chrome 远程调试),也没有任何类型的错误。

我的 javascript 看起来像这样:

    $( ".msg_head" ).on( "collapsibleexpand", function( event, ui ) 
        alert('expand');
     );

小提琴可以在这里查看:fiddle

【问题讨论】:

【参考方案1】:

我已经使用这个 js 代码更新了fiddle 一个可行的解决方案:

$(document).on( "collapsibleexpand", ".msg_head",function( event, ui ) 
    alert('expand');
 );

【讨论】:

【参考方案2】:

jcarrera 的答案将起作用(事件委托)。但是从 jQuery Mobile 的角度来看,问题在于您没有在 jQM pagecreate 事件中创建处理程序。所以可折叠的还不存在。将 pagecreate 用于包含可折叠项的页面,如下所示:

$(document).on("pagecreate","#your-page-id", function() 
  $( ".msg_head" ).on( "collapsibleexpand",  function( event, ui ) 
    alert('expand');
   );
);  

更新FIDDLE

【讨论】:

我仍然无法解释原因,但这段代码也不起作用。我使用了一种解决方法,并在可折叠标题上捕获了点击事件。

以上是关于jQuery Mobile 可折叠“展开”事件未在 Cordova 应用程序中触发的主要内容,如果未能解决你的问题,请参考以下文章

设置jquery-mobile展开后可折叠高度

jquery mobile - 单击页面后页脚可折叠向下展开

jQuery Mobile - 仅使可折叠小部件的某些部分处于活动状态

如何在折叠之前从 jQuery Mobile 获取 .ui-collapsible 的“折叠”事件

jQuery-Mobile可折叠slideDown效果

如何使用 jQuery Mobile 过滤可折叠集?