gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 22:26:07 25 4
gpt4 key购买 nike

我正在构建一个使用 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 Mobile 样式标题和后退按钮等时。

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

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

myscripts.js 文件中我什么也没得到。我需要以不同的方式触发 JQuery 吗?有人能指出我正确的方向吗?

编辑:

我找到了this其中提到将其放在 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>

最佳答案

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

第一页正常加载。它的 HEAD 和 BODY 被加载到 DOM 中,它们在那里等待其他内容。加载第二个页面时,仅将其 BODY 内容加载到 DOM 中。

所以如果你想为每个页面都有单独的js文件,你需要从BODY中初始化它们,因为HEAD将被丢弃。

像这样:

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

同样的事情也适用于您的 LINK 和 STYLE 标记。

如果您想了解更多信息,请阅读我的另一篇文章,其中包含有关此主题的示例: Why I have to put all the script to index.html in jquery mobile

另一件事,在使用 jQuery Mobile 时,切勿使用这种初始化:

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

您也不应该使用经典的 jQuery 文档。它们中的 Bot 通常会在页面成功加载到 DOM 之前触发。这就是 jQuery Mobile 具有页面事件的原因。您使用 pageinit 事件是正确的,但您的方式是错误的。 jQuery Mobile 页面事件应该像这样绑定(bind):

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

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

关于jquery - 在 Phonegap 项目中使用普通 JQuery(使用 JQuery Mobile),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16558305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com