当前位置: 首页 > 知识库问答 >
问题:

在Phonegap项目中使用普通JQuery(使用JQuery Mobile)

许子平
2023-03-14

我正在构建一个使用Cordova/PhoneGap和JQuery Mobile的应用程序。

我想在应用程序中使用JQuery,但我无法让它工作-即使使用简单的代码,也不会发生任何事情。

我相信我的标题设置正确:

<script type="text/javascript" src="cordova-2.7.0.js"></script>
        <script type="text/javascript" src="js/jquery.min.1.9.js"></script>
        <script type="text/javascript" src="js/jquery.mobile-1.3.1.min.js"></script>
        <script type="text/javascript" src="js/myscripts.js"></script>
        <script type="text/javascript">
            app.initialize();
            </script>

当我看到JQuery移动风格的标题和后退按钮等时。

但是当我尝试一些简单的事情时,比如:

document.addEventListener("deviceready", function(){
    $('p').append("<strong>HEllO</strong>");
});

在MyScript中。我什么都没有得到。我是否需要以不同的方式触发JQuery?有人能给我指出正确的方向吗?

编辑:

我找到了这个,上面提到把它放在div中。这实际上对我有用,例如

 <div class="normal" data-role="page" data-title="Program">
          <script type="text/javascript">
          $(".normal").on('pageinit', function() {

          $('p').append("<strong>HEllO</strong>");
          });
          </script>

但肯定有更好的方法吗?必须有一种方法将这些脚本都放在自己的外部文件中?

PS:我的HTML是:

<body>
      <div data-role="page" data-title="Program">
          <div id="programholder">
              <div data-role="header">
                  <a href="index.html" data-role="button" data-rel="back" data-direction="reverse" data-icon="arrow-l" data-iconpos="left">Back</a>
                  <h1>HEADER</h1>
              </div><!--HEADER-->
              <div data-role="content">
                  <p>
                  Append here
                  </p>
             </div><!--CONTENT-->
          </div><!--HOLDER-->    
      </div><!--PAGE-->
    </body>

共有1个答案

华欣怡
2023-03-14

要了解问题,您必须了解jQuery Mobile的工作原理。它使用ajax加载其他页面。

首页正常加载。它的头部和身体被加载到DOM中,它们在那里等待其他内容。加载第二个页面时,只有其正文内容加载到DOM中。

因此,如果您想为每个页面分离js文件,您需要从正文中初始化它们,因为HEAD将被丢弃。

这样地:

<body>
    <script>
        // Your javascript will go here
    </script>
    // And rest of your HTML content
</body>

链接和样式标记也是如此。

如果您想了解更多信息,请阅读我的另一篇文章,并附上与此主题相关的示例:为什么我必须将所有脚本编入索引。jquery mobile中的html

其他事情,在使用jQuery Mobile时,永远不要使用这种初始化:

document.addEventListener("deviceready", function(){
    $('p').append("<strong>HEllO</strong>");
});

您也不应该使用经典的jQuery document ready。它们中的Bot通常会在页面成功加载到DOM之前触发。这就是jQuery Mobile有页面evenets的原因。您使用pageinit事件是正确的,但您使用了错误的方式。jQuery移动页面事件的绑定方式如下:

$(document).on('pageinit', ".normal",function() {
      $('p').append("<strong>HEllO</strong>");
});

如果您想了解更多信息,请阅读我关于文档就绪与页面事件差异的其他答案:jQuery Mobile:文档就绪与页面事件

 类似资料:
  • 我目前正在开发一个SpringBootJAR库,用于可重用的组件,比如 ldap 电子邮件 与apache kafka消息 其余api用法 我们公司的每个Java用户/程序员都应该能够把这个罐子放在一个项目中(通过maven或其他方式),并使用可重用的组件,而不是一遍又一遍地编码所有的东西。 在REST之上为该问题构建微服务不是我们的选择。 我的问题是: 我可以在任何普通Java项目中重用这个Sp

  • 在一个多模块的Android项目中,我有一个其他Android库和应用程序依赖的普通Java项目。我最近将整个项目迁移到使用Gradle构建。 我在运行纯Java项目的junit测试时遇到了一个问题,仅在Android Studio中。在命令行上,测试运行正常: 这将按预期执行单元测试,如果我插入一个作为健全性检查,我将正确地获得预期的失败。 但是,我无法在Android Studio中运行单元测

  • 问题内容: 我正在使用已下载的WCF jQuery AJAX呼叫示例。我可以运行它并使它在同一项目中工作。当我从同一解决方案中的不同项目访问同一项目时,它什么也不做。以下是我正在调用的方法。 我在成功和失败方法中有alert()。 当我直接在浏览器中运行URL时,它将返回我结果。但是,如果我从其他项目中运行它,它什么也没做。没有警报,没有结果。 以下是我的服务正在运行的项目的Web.Config;

  • 项目中总是有很多图标,一般情况下都是切成很小的图片,但是有多个颜色就不好处理了,这时候字体图标就很有优势了,能够像修改文字那样修改图标的大小和颜色,而且还不会失真变模糊,简直是简化前端开发的一大工具。 如果想要直接使用它们自带的官方图标,选择我们想要的图标之后,点击右下角的 Generate Font F 这时会看到我们已经选择的图标,在这里可以修改名称等,然后点击右下角的下载,解压文件,可以查看

  • info Lavas Basic 模板并不包含此功能 在项目中有两种使用图标的方式,可以同时使用: 使用 material 字体文件 引入自定义的 SVG 文件 字体文件 material 图标能够满足大部分应用场景: 我们已经引入了 material 字体文件和所需样式表,直接使用 vuetify 中 Icons 组件即可,基本方法如下: <v-icon>home</v-icon> 更多使用方