我正在开发一个使用phonegap的示例应用程序,其中包含用于android的jQuery移动插件。我创建了一个页面main.html。从main.html,我能够抓住这个事件。在主页面中按下按钮后,我使用($.mobile.changePage("path")
)功能将内容更改为signup.html。我在signup.html中有按钮但是当我点击该按钮时,点击事件不会被触发。我已经在signup.html中加载了所有js文件。我做错了什么?请指导我。
澄清:我应该只保留一个html(main.html)并通过我必须进行页面导航。
答案 0 :(得分:4)
如果我理解正确,您使用ajax将此页面加载到 DOM ?如果这是真的那么我理解你的问题。你看,当ajax用于页面加载时,只有 BODY 内容被加载到 DOM 。
如果您在第一个HTML文件中初始化第二个html页面javascript,或者将 SCRIPT 块移到第二个 HTML BODY >中,您可以解决问题strong>内容。
此外,我在其他 ARTICLE 中描述了此问题,其中包含更多详细信息和一些示例,或者可以找到 HERE 。
这也可能是一个不同的问题。你看,如果你有2个具有相同id的按钮,它们都在 DOM 结构中。如果您尝试在第二页按钮上绑定单击事件,则该相同事件将绑定到第一页上的按钮。因为它们具有相同的id jQuery 会将事件绑定到DOM中的第一个按钮(带有该id)。
要解决此问题,您需要使用名为active page的 jQM 构造函数。还有一个警告,下一个代码示例仅适用于在 pageinit 事件后初始化的页面事件,例如 pagebeforeshow 或 pageshow 事件:
$(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)并不重要,您只需要担心我之前提到过的事情。
答案 1 :(得分:2)
您是否将代码包装在以下代码段中?
$(document).on('pagebeforeshow', '#yourPageID', function(){
// Registering button click
$('#myButtonID').bind('click',function(){
$.mobile.changePage('yourfile.html');
});
});
如果您只是将其包裹在<script></script>
标记内,则事件不会触发。
您是否在控制台中出现任何错误?请检查DDMS
。