Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Phonegap-jquery Mobile:按钮单击事件无法在android中捕获_Android_Jquery_Jquery Mobile_Cordova - Fatal编程技术网

Phonegap-jquery Mobile:按钮单击事件无法在android中捕获

Phonegap-jquery Mobile:按钮单击事件无法在android中捕获,android,jquery,jquery-mobile,cordova,Android,Jquery,Jquery Mobile,Cordova,我正在使用phonegap和android的jQuery移动插件开发一个示例应用程序。我创建了一个页面main.html。通过main.html,我能够捕捉到事件。按下主页中的按钮后,我使用($.mobile.changePage(“path”))函数将内容更改为signup.html。我在signup.html中有一个按钮,但当我单击该按钮时,不会触发click事件。我也在signup.html中加载了所有的js文件。我做错了什么?请引导我 澄清:我应该只保留一个html(main.html)

我正在使用phonegap和android的jQuery移动插件开发一个示例应用程序。我创建了一个页面main.html。通过main.html,我能够捕捉到事件。按下主页中的按钮后,我使用(
$.mobile.changePage(“path”)
)函数将内容更改为signup.html。我在signup.html中有一个按钮,但当我单击该按钮时,不会触发click事件。我也在signup.html中加载了所有的js文件。我做错了什么?请引导我


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

您是否将代码包装在下面的代码片段中

$(document).on('pagebeforeshow', '#yourPageID', function(){     
    // Registering button click  
    $('#myButtonID').bind('click',function(){
       $.mobile.changePage('yourfile.html');
    });
});
如果您只是将其包装在
标签中,事件将不会触发


您在控制台中有任何错误吗?检查
DDMS

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

$(document).on('pagebeforeshow', '#yourPageID', function(){     
    // Registering button click  
    $('#myButtonID').bind('click',function(){
       $.mobile.changePage('yourfile.html');
    });
});
如果您只是将其包装在
标签中,事件将不会触发

您在控制台中有任何错误吗?检查
DDMS

以防第二页javascript放在标题内容中 如果我理解正确,您是在使用ajax将此页面加载到DOM?如果这是真的,那么我理解你的问题。您可以看到,当ajax仅用于页面加载时,正文内容被加载到DOM

如果在第一个html文件中初始化第二个html页面javascript,或者将脚本块移动到第二个html正文内容中,则可以解决问题

另外,我在另一篇中描述了这个问题,并提供了更多的细节和一些示例,或者可以在中找到

如果您有多个具有相同id的按钮 这也可能是一个稍微不同的问题。你看,如果你有两个相同id的按钮,它们都在一个DOM结构中。如果尝试绑定第二个页面按钮上的单击事件,则该事件将绑定到第一个页面上的按钮。由于它们具有相同的id,jQuery将把事件绑定到DOM中找到的第一个按钮(具有该id)

要解决此问题,需要使用名为activepage的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),您只需要担心我前面提到的事情。

如果您的第二个页面javascript放在标题内容中 如果我理解正确,您是在使用ajax将此页面加载到DOM?如果这是真的,那么我理解你的问题。您可以看到,当ajax仅用于页面加载时,正文内容被加载到DOM

如果在第一个html文件中初始化第二个html页面javascript,或者将脚本块移动到第二个html正文内容中,则可以解决问题

另外,我在另一篇中描述了这个问题,并提供了更多的细节和一些示例,或者可以在中找到

如果您有多个具有相同id的按钮 这也可能是一个稍微不同的问题。你看,如果你有两个相同id的按钮,它们都在一个DOM结构中。如果尝试绑定第二个页面按钮上的单击事件,则该事件将绑定到第一个页面上的按钮。由于它们具有相同的id,jQuery将把事件绑定到DOM中找到的第一个按钮(具有该id)

要解决此问题,需要使用名为activepage的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),您只需要担心我前面提到的事情