2

我试图在我的页面加载时加载一些 jquery javascript,但它总是加载两次。我正在使用 jquery 1.7.2 和 jquery mobile 1.1.0。我尝试了这 3 种不同的方法,但它总是加载脚本两次。

$(document).bind("ready", function() { }
$(document).ready(function() { }
$(document).live('pageinit',function(event) { }

编辑:我解决了,狗屎!我100%肯定这个错误不会发生在其他人身上,我很抱歉这个愚蠢的问题。

4

4 回答 4

7

如上所述,我遇到了与 jqueryMobile 相同的问题。也就是说,放置在正文中的所有脚本都会加载两次。如果放置在 中,它们只会按预期加载一次。

我通过更改根(正文开始后的第一个 div)以包含“页面”的数据角色来解决正文中的双重加载问题:

<body>  
<div data-role="page"> 

瞧,没有更多的双重加载!

这是新 HTML5BoilerPlate 用户的常见问题。

于 2012-05-25T04:32:04.020 回答
2

此时,jQuery 1.7.2 尚未与 jQuery Mobile 1.1.0 进行全面测试。您可能想要使用 jQuery 1.7.1。

支持 jQuery 1.7.1

jQuery Mobile 1.1.0 现在支持 1.6.4 和 1.7.1 版本的 jQuery 核心。我们建议您使用 1.7.1 以利用最新版本中的所有重大改进。如果您坚持使用 1.0.1 一段时间,请记住仅支持 1.6.4。我们仍在测试 1.7.2,并将在未来的版本中正式支持它。

于 2012-04-23T13:28:15.980 回答
2

更新:我在本地使用 jQuery 1.7.2 和 jQuery Mobile 1.1.0 进行了尝试,效果很好。我看到一个 1 呼叫pageinit事件。我什至尝试了多个页面,但仍然只看到一个调用pageinit.

您通常不想在 jQuery Mobile 中使用 ready 事件,而是只使用该pageinit事件。根据jQuery 移动事件文档...

在初始化发生后,在正在初始化的页面上触发。我们建议绑定到此事件而不是 DOM ready(),因为无论是直接加载页面还是将内容作为 Ajax 导航系统的一部分拉入另一个页面,这都会起作用。

要获得更具体的答案,您确实需要发布实际代码;但是,随着您在问题中的混合readypageinit我猜测pageinit并且ready都在调用相同的代码。

于 2012-04-23T13:32:07.473 回答
0

我的脚本在 jQueryMobile 1.3.0 中被调用了两次,我只是通过使用jquery-1.9.1而不是 jquery-1.7.2 解决了这个问题。
您还可以使用jQuery Migrate 插件,
即 <script src="http://code.jquery.com/jquery-migrate-1.1.0.min.js"></script>
向后兼容以前版本的 jQuery。

于 2013-04-08T07:49:25.287 回答