Jquery mobile Jquerymobile-$.mobile.changepage

Jquery mobile Jquerymobile-$.mobile.changepage,jquery-mobile,Jquery Mobile,我想从.js文件中打开.html文件。所以我使用了$.mobile.changePage(“file.html”)。在file.html中有file.js。但是当调用中的file.html时,file.js不会调用 提前谢谢 first.js $.mobile.changePage ("file.html"); file.html <!DOCTYPE html> <html> <head> <meta charset="utf-8" />

我想从.js文件中打开.html文件。所以我使用了$.mobile.changePage(“file.html”)。在file.html中有file.js。但是当调用中的file.html时,file.js不会调用

提前谢谢

first.js

 $.mobile.changePage ("file.html");
file.html

<!DOCTYPE html> 
<html> 
 <head>
 <meta charset="utf-8" /> 
 <title>jQuery Mobile Framework - Dialog Example</title> 
 <link rel="stylesheet" href="jquery.mobile-1.0a2.min.css" />
 <script src="jquery-1.4.4.min.js"></script>
   <script src="jquery.mobile-1.0a2.min.js"></script> 
    <script src="../Scripts/file.js"/> // Could not imported
    <script src="../Scripts/helperArrays.js"/> // Could not imported
    <script src="../Scripts/globalVariables.js"/> // Could not imported
</head> 
<body> 

<div data-role="page">

  <div data-role="header" data-nobackbtn="true">
   <h1>Vaults</h1>
  </div>

 <!-- <div data-role="content" data-theme="c" id="contentVault">

   <a href="Views/searchPage.html" data-role="button" data-theme="b">Sample Vault</a>       
   <a href="Views/searchPage.html" data-role="button" data-theme="c">My Vault</a>    
  </div> -->

        <div data-role="content" id="content">  
        <ul id="listview" data-role="listview" data-inset="true" data-theme="e" data-dividertheme="b">            
          <li id="listdiv" data-role="list-divider">List of Items</li>
        </ul>    
      </div><!-- /content -->

 </div>


</body>
</html>

jQuery移动框架-对话框示例
//无法导入
//无法导入
//无法导入
拱顶
    项目列表

请帮助我。

Jquery mobile通过AJAX获取页面并将其内容添加到当前页面。 我看到一些关于将页面标题更改为传入标题的通知,因此他们(计划?)正在访问标题,但目前jquery mobile在加载页面时似乎没有加载外部js


更重要的是,如果您使用$(document).ready(),它将不会被触发,因为它是AJAX,当jQM通过AJAX加载另一个页面时,它只会拉入div[data role=“page”]中的任何内容,而不会拉入其他内容,比如头部


因此,如果您愿意,可以在这个div中包含任何JS/CSS,问题是,如果多次访问这个页面,任何CSS都会累积,但JS的问题更严重

基本上,每个页面都会附加到DOM中,因此如果使用$('div.someClass')这样的全局选择器,JS会在整个DOM(加载的每个页面)上运行,即使使用ID也不是一个完美的解决方案,因为如果可以链接到同一页面两次


对于较小的站点

 $.mobile.changePage ("file.html");
我通过将所有CSS移到一个文件中解决了这个问题,对于每次加载页面时要运行的JS代码,我绑定到pageinit和pageshow jQM事件:

<script type="text/javascript">         
$("div:jqmData(role='page'):last").bind('pageinit', function(){
          //your code here - $.mobile.activePage not declared
    });

    $("div:jqmData(role='page'):last").bind('pageshow', function(){
          //your code here - $.mobile.activePage works now
    });
</script>

$(“div:jqmData(role='page'):last”).bind('pageinit',function(){
//此处的代码-$.mobile.activePage未声明
});
$(“div:jqmData(role='page'):last”).bind('pageshow',function(){
//这里的代码-$.mobile.activePage现在可以使用了
});
pageinit事件在加载页面时仅运行一次(加载页面后,如果您导航回该页面,即使通过“后退”按钮,也不会再次触发该事件,则会保留在内存中),而pageshow则在每次显示页面时都会触发,例如,当您通过浏览器上的“后退”按钮导航回该页面时

pageinit在DOM存在时运行,pageshow事件仅当您有一些依赖于呈现的DOM的代码,并且您需要通过$.mobile.activePage快速引用活动页面或更改某些数据,并且每次显示时都需要刷新此页面时才运行。在大多数情况下,我只将pageinit用作document.ready For jQM并将我的事件绑定到那里。对静态元素使用bind,而不是对动态元素使用live,因为live事件在文档根上侦听,而您希望在page div上侦听



对于较大的站点

 $.mobile.changePage ("file.html");
对于大型站点,将实时事件绑定到任何页面并处理页面类型都有好处,这样js代码就不会被多次加载

如果你有一个外部js文件,比如说helper函数,你只需要把它放在你所有页面的头上一次(如果没有太多的话),如果你有一个非常大的站点,你可以通过跟踪服务器端加载了哪些js文件来做得更好

所有这些都可以通过不使用AJAX加载新页面来避免,所以请考虑这种转换/加载效果是否值得


*以下是我如何处理大型jQM站点:*

  • 将实时事件绑定到所有页面/对话框pageinit和pageshow事件:
  • $(文档)。在('pageinit pageshow'、'div:jqmData(role=“page”)、div:jqmData(role=“dialog”)'上,函数(事件){

  • 我用一个名称引用每一页:
  • 在这个实时事件中,您基本上可以为每个页面“name”使用一个switch语句,然后检查event.type中的pageinit/pageshow或两者,并将代码放在那里,然后每次创建/显示页面时,都会触发此事件,它知道触发它的页面是什么,然后调用相应的代码

  • 我最终有太多的代码,所以我构建了一个处理程序对象,其中每个页面的js都包含在一个单独的js文件中,并且可以向live事件注册处理程序

  • 缺点是,整个站点的所有js都在用户到达的第一个页面上加载,但即使是大型站点也比jQuery或jQM小,因此这不应该引起关注。优点是用户每次导航到新页面时,不再通过AJAX加载每个页面的所有js


    *注意:现在RequireJS可以使这变得更易于管理。

    Hi.我如何调用外部JS?你应该以jquerymobile的方式编写JS,作为对页面的增强。将其链接到
    你是否创建过该教程?我在meet.JS活动上有一个关于它的演讲/演示,我必须将其形成一个教程并发布。访问jquerymobiledictionary.pl从现在开始几天,到那时它可能已经存在了。这是我不喜欢JQM作为框架的众多原因之一。我不推荐任何认真关注移动开发的人使用它。