在动态添加页面时,Jquery mobile不应用样式

时间:2013-06-25 16:35:52

标签: jquery-mobile sammy.js

您好我有一个使用JQM和Sammy的小应用程序。我正在使用Sammy动态加载页面并附加到index.html的主体。问题是我没有看到JQM主题正在应用,并且控制台也没有错误。

这有什么理由吗?我打电话给以下

 context.render('view/abc.template')
                .appendTo(context.$element(),function(){
                    $(document).ready(function () {
                        $("#container").trigger('pagecreate');
                    });
                });

由于

1 个答案:

答案 0 :(得分:1)

我就是这样做的;

1)首先我在名为plugins.js的文件中禁用了我的JQM路由;

$(document).bind("mobileinit", function() {
    /**
    * check out http://coenraets.org/blog/2012/03/using-backbone-js-with-jquery-mobile/  for more details
    */
   $.mobile.ajaxEnabled = false;
   $.mobile.linkBindingEnabled = false;
   $.mobile.hashListeningEnabled = false;
   $.mobile.pushStateEnabled = false;
}); 

在我加载JQM之前加载了这段代码,就像这样;

    <script src="//code.jquery.com/jquery-1.9.1.min.js"></script>
    <script src="js/plugins.js"></script>
    <script src="//code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
    <script src="js/vendor/sammy/sammy.js" type="text/javascript" charset="utf-8"></script>
    <script src="js/vendor/sammy/plugins/sammy.template.js" type="text/javascript" charset="utf-8"></script>
    <script src="js/main.js"></script>

然后我的main.js函数看起来像这样;

(function($) {

    var app = $.sammy('#main', function() {
        this.use('Template');

        this.get('#/', function(context) {
            context.load('/templates/index.template', function() {
                $("#container").trigger('pagecreate');
            }).appendTo(context.$element());
        });

        this.get('#/landing', function(context) {
            context.load('/templates/landing.template', function() {
                $("#container").trigger('pagecreate');
            }).replace(context.$element());
        });

    });

    $(function() {
        app.run('#/');
    });
})(jQuery);

我认为你上面的代码片段并不遥远。注意,你有$(document).ready函数作为appendTo的回调函数,它不需要回调。你会看到我的是load()吗