【问题标题】:Jquery Mobile - how to run a plugin at mobileinit using Jquery widget factoryJquery Mobile - 如何使用 Jquery 小部件工厂在 mobileinit 上运行插件
【发布时间】:2011-11-16 12:01:01
【问题描述】:

我有一些 jquery 脚本,我想将它们放入插件中。

在我当前的设置中,代码在“mobileinit”处执行,而我的 custom.js 文件位于 Jquery.js 和 Jquery Mobile.js 文件之间。

这就是我正在做的:

(function($ , window, undefined) {
$( window.document ).bind('mobileinit', function(){
          alert ("init");
 });     
})(jQuery,window);

我想按照JQM-developers 的推荐,使用 Jquery Widget factory 将其制作成一个插件

目前我遇到以下问题:

(function( $, window, undefined ){
   $.widget( "myPlugin", $.mobile.widget, {
        options: { },
        _create: function() {$.fn.myPlugin = function() {       
          alert ("init");          
           };
   $( window.document ).bind('mobileinit', function(){ {
     myPlugin();
     });
})( jQuery, window );

这不起作用...如果我将 plugin.js 放在 JQM.js 之前“未定义移动设备”。如果我把它放在后面,什么都不会发生。

我的问题: 如何制作一个在 mobileinit 上运行的小部件,即在 Jquery Mobile.js 运行之前。

感谢您的帮助!

【问题讨论】:

    标签: jquery jquery-plugins jquery-mobile


    【解决方案1】:

    在其他地方得到了答案。我需要绑定到 JQM pagecreate 事件并在 Jquery 加载之后但在 JQM 加载之前放置 pluing。工作正常。

    【讨论】:

      【解决方案2】:

      好的。以下是可能性的汇总 - 您可以执行以下任一操作:

      1. 绑定到 JqueryMobile pagecreate 事件 (see here):
        这会在元素增强后但在页面显示之前触发

      2. 绑定到 JqueryMobile pageinit 事件 (same link):
        这样,您可以在 JQM 小部件增强页面上的元素之前对其进行更改。这应该等同于$(document).ready()

      但是,如果要更改 JQM 核心本身,则需要绑定到较早的事件。

      1. 绑定到 JqueryMobile mobileinit 事件 (same link):
        您只能通过将插件文件放在 Jquery-Mobile.js 之前来覆盖 Jquery Mobile 的东西集(本身设置在 mobileinit)。但是这样你就不能再使用 Jquery Mobile 推荐的 widget factory 结构了,因为它需要先运行 Jquery-Mobile.js。

      我目前正在检查是否也可以绑定到 DOMContentLoaded。也许这是另一种解决方案

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-30
        • 1970-01-01
        相关资源
        最近更新 更多