【发布时间】:2013-12-01 02:46:51
【问题描述】:
在我的脚本中,有问题的函数位于末尾
$(jquery).ready(function(){...});
由于某种原因,它在 DOM 加载之前触发。我将在下面发布整个脚本。我对第 246-248 行发生的事情很感兴趣。
这是错误的部分:
alert(listObj.listOffset);
listObj.allLists.offset({ left: listObj.listOffset });
listObj.allLists[listIndex].focus();
更多细节
脚本的这个特定部分试图将重点放在今天。有一个布局对象应该启用这个过程。它需要在 DOM 加载后运行,以便计算布局偏移变量。当它提前加载时,偏移量最终为 15000px 而不是 400ish。
如果您可以提供一些要寻找的东西,那可能会帮助我弄清楚,即使您无法确定解决方案。我知道这是很多代码。这是一款需要很多人参与的企业应用。
我的文件脚本部分
// bind listeners to time input fields
$('.timeBlock').on("blur", validateHrs);
$('.timeBlock').keyup(function () {
var listObj = new LayoutObj();
listObj.tabNav();
});
// bind listeners to prev/next buttons
$('.previous, .next').on("click", function () {
var str = $(this).attr('class');
var obj = new LayoutObj();
obj.navDates(str);
});
// calculate totals for stored inputs
totalHrs();
// highlight today's date
var today = new Date();
var thisMonth = today.getMonth();
var thisDate = today.getDate();
var dateStr = '';
var splitDates = new Array();
var fullDates = new Array();
var listIndex;
var listObj;
fullDates = $('.dateNum');
fullDates.each(function (index) {
splitDates[index] = $(this).text().split('/');
});
for (var i = 0; i < splitDates.length; i++) {
if (thisMonth === (parseInt(splitDates[i][0], 10) - 1) && thisDate === parseInt(splitDates[i][1], 10)) {
thisMonth += 1;
thisMonth += '';
thisDate += '';
if (thisMonth.length < 2) {
dateStr = "0" + thisMonth + "/";
}
else {
dateStr = thisMonth + "/";
}
if (thisDate.length < 2) {
dateStr += "0" + thisDate;
}
else {
dateStr += thisDate;
}
fullDates[i].parentNode.setAttribute('class', 'date today');
listIndex = i;
}
//The following code will shift the job lists to reveal today's date ///////, if it is not in the view on load.
}
var listObj = new LayoutObj();
listObj.listOffset = listObj.cellWidth * (listIndex + 1);
//alert(listObj.listOffset);
listObj.allLists.offset({ left: listObj.listOffset });
listObj.allLists[listIndex].focus();
});
布局对象
【问题讨论】:
-
圣典蝙蝠侠。你能不能把那堵文字墙剪掉一些?
-
查看头像/用户名。有这么多手……很多代码!哈哈
-
我不知道他为什么被否决,他已经按照指南发布了一个完整的问题
-
我不知道你需要多少,因为我不知道问题出在哪里。 .ready() 方法在相关行之后结束。
-
.ready()方法之后的所有内容都无关紧要。您可以通过从 ready 方法中删除代码来开始调试,以查看问题是否仍然存在。然后发布演示问题的最小版本。