Phonegap - jquery Mobile:按钮点击事件无法捕获android

时间:2013-04-01 11:48:45

标签: android jquery jquery-mobile cordova

我正在开发一个使用phonegap的示例应用程序,其中包含用于android的jQuery移动插件。我创建了一个页面main.html。从main.html,我能够抓住这个事件。在主页面中按下按钮后,我使用($.mobile.changePage("path"))功能将内容更改为signup.html。我在signup.html中有按钮但是当我点击该按钮时,点击事件不会被触发。我已经在signup.html中加载了所有js文件。我做错了什么?请指导我。

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

2 个答案:

答案 0 :(得分:4)

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

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

如果您在第一个HTML文件中初始化第二个html页面javascript,或者将 SCRIPT 块移到第二个 HTML BODY 中,您可以解决问题strong>内容。

此外,我在其他 ARTICLE 中描述了此问题,其中包含更多详细信息和一些示例,或者可以找到 HERE

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

这也可能是一个不同的问题。你看,如果你有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