我遇到了jQuery mobile的一个奇怪的问题 - 如果我有一个到同一页面的锚点链接,那么点击链接并返回到同一页面后页面上的javascript就不会运行了。
例如(test.html):
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.1/jquery.mobile.structure-1.4.1.min.css" />
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="https://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script>
<script type="text/javascript">
alert('hello');
</script>
</head>
<body>
<div style="height: 1000px">
<a href="test.html?dosomething=1">test</a>
</div>
</body>
</html>
...“hello”警报首次显示,但点击“测试”链接(返回同一页面)后,警报不会发生。
如果删除对jquery mobile js的引用,那么它会按预期工作,显示“hello”。
有谁知道这里发生了什么?
答案 0 :(得分:0)
jQuery mobile通过AJAX加载内部链接。
尝试将锚点更改为:
<a data-ajax="false" href="test.html?dosomething=1">test</a>
文档 - Linking Pages:
默认链接行为:Ajax 要启用动画页面过渡,所有指向外部页面的链接(例如products.html)都将通过Ajax加载。为了不引人注意地执行此操作,框架解析链接的href以形成Ajax请求(Hijax)并显示加载微调器。所有这些都是由jQuery Mobile自动发生的。
如果Ajax请求成功,则将新页面内容添加到DOM,所有移动窗口小部件都会自动初始化,然后将新页面设置为带有页面转换的视图。