该脚本最初位于我的EJS视图中,隐藏在一些不错的脚本标记之间。我将它移动到外部文件,最初它根本不起作用,我的点击监听器什么也没做。然后我把它移到了身体标签外面的页面底部,这使它有时工作,当它工作时它比以前慢得多。这是我第一次使用pageinit而不是document.ready,我假设这就是为什么我无法弄清楚我的问题是什么。这是代码。谢谢你的帮助。
var currentList;
var elementID;
var id;
$('#mowingmaster').on('pageinit', function (event) {
$('li').each(function (index) {
var elementID = $(this).attr('id');
elementID = '#' + elementID;
$(function () {
$(elementID).click(function (event) {
var elementID = $(this).attr('id');
id = elementID;
elementID = '#' + elementID;
setElementID(id);
$.mobile.changePage("#dailylist");
});
});
});
$("#dailylist").on("pagebeforeshow", function (event, ui) {
$("#testhide").hide()
setCurrentList(elementID);
});
$("#dailylist").on("pageshow", function (event, ui) {
});
});
function setElementID(id) {
id = id;
}
function setCurrentList() {
var currentList = id;
$.ajax({
type: "POST",
url: "/scape/mowinglist",
data: {
currentList: currentList
},
success: function (data) {
}
});
};
答案 0 :(得分:1)
这是我第一次使用pageinit而不是document.ready
$('#mowingmaster').on('pageinit', function (event) {
要实现这一点,元素#mowingmaster
必须在运行该代码段时才存在 - 如果不运行,则选择器不返回任何内容,因此没有任何内容可以将事件绑定到on
document.ready的使用方式不同 - 您通常使用它来在文档准备就绪时开始执行代码,然后在该代码中绑定事件。
$( document ).on( "pageinit", "#aboutPage", function( event ) {
他们在这里将此事件绑定到document
,并为元素提供了一个选择器(#aboutPage
) - 这就是你应该使用它的方式。 (document
从一开始就“始终”可用,而在脚本执行时,DOM元素可能不存在。)