0

我正在使用带有 jQ​​uery 移动插件的 phonegap 开发一个示例应用程序。我创建了一个页面 main.html。从 main.html,我能够捕捉到事件。在主页中按下按钮后,我将 using( $.mobile.changePage("path")) 函数的内容更改为 signup.html。我在 signup.html 中有按钮,但是当我单击该按钮时,单击事件不会被触发。我也已经在 signup.html 中加载了所有的 js 文件。做错了什么?请指导我。

澄清:我应该只保留一个 html (main.html) 并且通过它我必须进行页面导航。?

4

2 回答 2

4

如果您的第二页 javascript 放置在 HEAD 内容中

如果我理解正确,您是在使用 ajax 将此页面加载到DOM中吗?如果这是真的,那么我理解你的问题。你看,当 ajax 用于页面加载时,只有BODY内容被加载到DOM中。

如果您在第一个 HTML 文件中初始化您的第二个 html 页面 javascript 或在第二个HTML正文内容中移动您的SCRIPT块,您可以解决您的问题。

此外,我已经在我的其他文章中描述了这个问题,其中包含更多细节和一些示例,或者可以在此处找到。

如果您有多个具有相同 id 的按钮

这也可能是一个有点不同的问题。你看,如果你有 2 个具有相同 id 的按钮,它们都在一个DOM结构中。如果您尝试在第二页按钮上绑定单击事件,则该相同事件将绑定到第一页上的按钮。因为它们具有相同的 id ,所以jQuery会将事件绑定到 DOM 中找到的第一个按钮(具有该 id)。

要解决此问题,您需要使用名为活动页面的jQM构造函数。还有一个警告,下一个代码示例仅适用于在pageinit事件之后初始化的页面事件,例如pagebeforeshowpageshow事件:

$(document).on('pagebeforeshow', '#yourPageID', function(){     
    // Registering button click  
    $(document).on('click', $.mobile.activePage.find('#myButtonID'), function(){
        // Do something
    });
});

这行代码:

$.mobile.activePage.find('#myButtonID')

只会在当前活动页面中找到按钮“#myButtonID”,无论 DOM 中存在多少具有相同 id 的其他按钮。

回答最后一个问题

关于你最后的问题。您使用哪种模板结构(1 个多页的 HTML 或多个 HTML)并不重要,您只需要担心我之前提到的事情。

于 2013-04-01T13:01:26.723 回答
2

您是否将代码包装在以下代码段中?

$(document).on('pagebeforeshow', '#yourPageID', function(){     
    // Registering button click  
    $('#myButtonID').bind('click',function(){
       $.mobile.changePage('yourfile.html');
    });
});

如果您只是将其包装在您的<script></script>标签中,则该事件将不会触发。

您在控制台中收到任何错误吗?检查DDMS它。

于 2013-04-01T11:53:09.560 回答