我每个页面都有一个文件,我试图在每个页面上实现 pageinit 事件处理程序(我认为严格属于一个页面的内容应该在那里声明),如下所示:

<body>
    <div id="myPage" data-role="page">
        <!-- Content here -->
        <script type="text/javascript">
            $("#myPage").live('pageinit', function() {
                // do something here...
            });
        </script>
    </div>
</body>

该事件已正确绑定(bind)到页面,因此代码已执行,但是 - 现在是我的问题 - 如果我转到另一个页面并稍后返回 pageinit 事件将执行两次。我认为这是因为 .live 方法再次将 pageinit 事件绑定(bind)到页面。但是 pageinit 事件不应该只在页面初始化时调用一次吗?我在这里缺少什么?

最佳答案

我认为最好将您的 JavaScript 代码移动到另一个文件中,因为当您在您的网站上导航时 jQuery Mobile 可能会清理(读取:从 DOM 中删除)该 myPage 页面,因此必须再次加载它并重新运行相同的块您定义的代码并为 pageinit 事件绑定(bind)了 2 个监听器。

这基本上就是为什么他们建议使用 liveon 函数的原因,但是如果您在页面上包含绑定(bind)代码,它就会失败;)

但是,如果您坚持将代码放在每页上,那么请使用 bind 而不是 live

引用:http://jquerymobile.com/demos/1.0/docs/pages/page-cache.html

关于jquery-mobile - 如何正确使用pageinit?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8782359/

10-09 22:57