我有这个奇怪的问题,如果转到我的index.html页面(使用jQuery Mobile构建的网站),其中有一个带有按钮的表单,那么我可以在按钮上多次单击会产生警报(查看按钮是否正常工作)并转到另一个名为main.html的页面。当我点击按钮时我收到警报,我也转到另一页。现在,如果我转到main.html然后再返回index.html并再次单击该按钮,那么它将不会生成警报,也不会返回到main.html页面。
我有按钮的以下代码:
$(document).ready(function() {
//event handler for submit button
$("#btnSubmit").click(function () {
alert('fdfs');
window.location.replace("main.html");
return false;
});
});
摘要:当我点击按钮然后它会产生一个警报,它会将我带到main.html,但是如果我带着这个按钮回到页面那么就不会这样做警报也不再改变页面..
ANWSER: 而不是使用:
window.location.replace("main.html");
我用过:
$.mobile.changePage('main.html');
这是因为我使用的是Jquery Mobile。
我也感谢Valjas提供有关导航的额外信息。
答案 0 :(得分:2)
@jackwanders说,使用window.location.replace()
是一个错误。
使用此变量发送未在浏览器(或PhoneGap)历史记录中注册的HTTP请求。即使您点击index.html
,您的应用仍会认为它位于#btnSubmit
内。
解决方案是使用另一个功能:window.location.href = "main.html"
此外,您无需在 document.ready
函数内编写绑定。这仅在您想要在页面加载后立即执行操作时才有用 - 但是,如果您再等一下用户单击该链接,则不需要它
答案 1 :(得分:2)
您正在使用 window.location.replace
,它将当前文件中的HTML替换为您链接到的文件中的HTML。您需要使用window.location.href
,而不是转到另一页。
此处有更多信息:http://www.w3schools.com/jsref/obj_location.asp
- 更新 -
格式与window.location.replace
上的格式不同。
window.location.href = 'main.html';
如果您仍然遇到问题,请尝试:
window.open('main.html', _blank);
这将在新标签页中打开页面。
- 更新 -
由于您使用的是jQuery Mobile,而不是使用jQuery click bind,所以您应该只使用jQuery Mobile API。
以下是一些应该有用的页面:
http://jquerymobile.com/demos/1.0a4.1/docs/pages/link-formats.html
http://jquerymobile.com/demos/1.0a4.1/docs/pages/link-formats.html#docs-navmodel.html