我将 jQuery Mobile 添加到我的项目中,因为我希望滑动事件触发 Bootstrap 轮播滚动。用它编码一天左右后,我注意到内部链接不再起作用。
我可以使用以下两个页面 test1.html 可靠地重现这一点:
<html>
<head></head>
<body>
<a href="test2.html">Another page</a>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquerymobile/1.4.2/jquery.mobile.min.js">
</script>
</body>
</html>
和 test2.html:
<html>
<head></head>
<body>
<a href="test1.html">First page</a>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquerymobile/1.4.2/jquery.mobile.min.js">
</script>
</body>
</html>
当我单击该链接时,jQuery 代码将抛出一个已处理的异常,该异常被吞下,但目标页面永远不会在浏览器中加载。当我删除 jQuery Mobile 时,它可以正常工作。
我见过这个问题 https://stackoverflow.com/questions/10837759/jquery-mobile-breaks-my-site- 添加data-ajax="false"
似乎确实解决了问题,但这真的有必要吗?那么 jQuery Mobile 的意义何在呢?
$.mobile.ajaxEnabled = false
没有做任何事情。我也遇到过这次讨论 https://github.com/jquery/jquery-mobile/issues/2283在 Github 上,并希望该问题仅在链接到非 jQuery Mobile 页面时发生,但事实并非如此。
这是 jQuery Mobile 所独有的。
首先,您错过了一个重要信息,如果您只需要使用一项功能,切勿将 jQuery Mobile 与其他框架混合使用。在这种情况下,您应该自定义 jQuery Mobile 并仅使用/构建所需的功能。找到它here http://jquerymobile.com/download-builder/.
在您的情况下,您正在使用完整的 jQuery Mobile 框架,它将超越您的整个项目。 jQuery Mobile 使用AJAX处理页面管理,这意味着它将加载页面到DOM使它们尽可能顺利地运行。
与多个人一起工作时HTML仅首先使用模板HTML文件已完全加载到DOM。当您打开另一个页面时,jQuery Mobile 将剥离HEAD并仅加载 div数据角色=“页面”属性,因为你没有这样的div页面转换会失败。
当您禁用时AJAX加载中数据-ajax=“假”属性,您将强制 jQuery Mobile 使用经典页面处理。
基本上只需遵循我的第一个建议并仅使用您真正需要的功能重建 jQuery Mobile。仅当您打算将其用作 UI 框架而不是其他框架时,才使用完整的 jQuery Mobile 框架,永远不要。
如果您需要更多信息,请随时询问我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)