jquery函数提前解雇

时间:2013-07-19 15:50:30

标签: jquery domready

在我的脚本中,有问题的函数位于

的末尾
$(jquery).ready(function(){...});

由于某种原因,它在加载DOM之前触发。我将在下面发布整个脚本。我对第246-248行发生的事情感兴趣。

这是BUGGY PART

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();
});

LayoutObj

2 个答案:

答案 0 :(得分:1)

您应该使用:

$(document).ready(function () { ... });

当你说在加载DOM之前它会激活时,在脚本中你已经将整个代码放入文档就绪块中。这些代码是否会影响尺寸?

您确定代码没有损坏吗?例如,您可以将该块拉出并将其绑定到单击事件。

答案 1 :(得分:0)

问题是第三方脚本!!愚蠢的脚本!