将 Jquery 移动重定向到新页面,并触发此页面中的函数
Redirect Jquery mobile to new page with triggering of functions in this page?
我正在使用JQuery移动构建一个移动应用程序,在首页中我们称之为page-1包含指向不同页面的导航按钮,让我们称其中一个为页面-2
以下是第 1 页
$(document).ready(function () {
$("body").pagecontainer({
defaults: true
});
$("#page-2").click(function () {
$("body").pagecontainer("change", "page-2.html", {
reload: true
});
$(document).ready(function () {
function_in_page - 2.init();
});
});
第 2 页包含以下内容
var function_in_page = {
init: function () {
alert('first-1');
$("#button-1").click(function () {
alert('second-1');
});
});
那么发生了什么,我收到"First-1"的警报,但是当我单击带有 ID 的按钮(按钮-1(时没有任何反应,有什么建议吗?
首先,.pagecontainer()
是使用默认设置自动初始化的,因此您无需对其进行初始化。
其次,不要使用 .ready()
在 jQuery Mobile 中添加侦听器,而是坚持使用页面容器事件。每当jQM框架加载页面和/或通过Ajax导航到它时,就会触发后一个事件,特别是在单页模型中。与仅在框架初始化时触发一次.ready()
不同。
有许多方法可以使用页面容器事件在单页模型中使用 jQuery Mobile 来控制您的 Web 应用程序。最安全的方法是为每个页面提供一个唯一的 ID,以确定在哪个页面上省略了哪个事件。另外需要注意的是,无论您有多少外部页面,DOM 中都会只保留两个页面;主页和您从主页导航到的另一个外部页面。
要添加侦听器,请使用pagecreate
事件,它等效于.ready()
,可以委托给特定页面。
<div data-role="page" id="home">
$(document).on("pagecreate", "#home", function () {
$(".selector").on("click", function () {
/* run code */
});
});
该事件将在每个页面触发一次,但请注意,它将在通过 Ajax 加载的任何外部页面上再次触发。因此,在添加新绑定之前,应使用 .off()
删除以前的绑定。否则,每当您通过 Ajax 加载外部页面时,附加的侦听器都会多个。
<div data-role="page" id="second">
$(document).on("pagecreate", "#second", function () {
$(".selector").off("click").on("click", function () {
/* run code */
});
});
将所有自定义 JS 代码保留在所有页面head
,尽管代码将在首次运行时加载一次。 jQuery Mobile 加载每个外部页面的第一个页面div,该 div 之外的任何内容都被完全忽略。
回到上面的代码,下面是它的外观。为每个页面提供一个 ID,并使用它们添加click
侦听器。假设home
是主页,second
是第 2 页.html。
$(document).on("pagecreate", "#home", function () {
$("#btn").on("click", function () {
$.mobile.pageContainer.pagecontainer("change", "page-2.html");
});
});
现在,第 2 页.html可见。将click
侦听器添加到button-1
。
$(document).on("pagecreate", "#second", function () {
$("#button-1").off("click").on("click", function () {
alert("page 2");
});
});
演示
阅读有关页面容器事件的更多信息。
如果第 2 页中的脚本提前执行,则该按钮可能尚不存在。尝试将其包裹在document.ready
$(document).ready(function(){
var function_in_page={init:function(){
alert('first-1');
$("#button-1").click(function(){
alert('second-1');
});});
});
- Jquery移动转换复选框在Jquery onclick函数()中第二次选中不起作用
- 我将此代码移动到一个单独的函数中,它停止工作,为什么
- 在 jquery 移动中离开页面时结束 SetInterval 函数
- Fabric.js函数将对象从A点移动到B点
- 阻止页面在jQuery函数之后重新加载或向上移动
- 在加载移动应用程序页面时调用Javascript函数
- 如何使用onmousemove函数在每次鼠标移动时更改背景图像
- 检测移动电话上调用javascript函数的动作
- 传递一个函数来更改 jquery 移动版中的页面
- 如何使用 JavaScript 函数在 JSP 中使用按钮移动到数据库的最后一条记录
- jQuery - 调用函数onmouseout,但仅当光标未移动到某个区域时
- 将 JQuery 函数移动到函数内部,然后从多个函数访问它
- Jquery 移动函数不起作用 == 页面刷新
- 如何将 ** return (this.innerText.length <= 200) ** 移动到函数
- 从移动 HTML 主体在方向更改时调用 Javascript 函数
- 如何让javascript在桌面上运行函数,而不是在移动设备上运行函数
- 将函数移动到 Java 脚本
- 如何将附加到Object的函数移动到Object.prototype
- 可以't使用setInterval函数移动对象
- 当将代码作为单独的函数移动时,在末尾出现意外输入