2013-07-19 2 views
0

В моем сценарии, рассматриваемая функция находится в концефункция JQuery стрельбы рано

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

По какой-то причине она обжига до загрузки DOM. Я опубликую весь сценарий ниже. Меня интересует, что происходит на строках 246-248.

ЭТО КОЛЯСКИ ЧАСТЬ:

alert(listObj.listOffset); 
listObj.allLists.offset({ left: listObj.listOffset }); 
listObj.allLists[listIndex].focus(); 

A Little More Detail

Эта часть сценария пытается поставить акцент на сегодня. Существует объект макета, который должен включить этот процесс. Он должен запускаться после загрузки DOM, чтобы он мог вычислять переменные смещения компоновки. Когда он загружается рано, смещение заканчивается на 15000 пикселей вместо 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

Священный код Бэтмен. Не могли бы вы вырезать часть этой стены? – psynnott

+1

Удачи вам! – Alvaro

+1

Проверьте имя аватара/пользователя. С таким количеством рук ... много кода! LOL – melancia

ответ

0

Вопрос был сторонний скрипт !! СТУПИДНЫЙ СКРИПТ!

1

Вы должны использовать:

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

Когда вы говорите, что срабатывает до загрузки DOM, в скрипт, вы поместили весь код в готовый блок документа. Какой-либо из этого кода влияет на размер?

Вы точно знаете, что код не нарушен? Например, вы можете вытащить этот блок и связать его с событием клика.

+1

Или даже лучше ... меньше кода: $ (function() {...}); – melancia

+1

или просто поместите код внизу страницы и не используйте document.ready :) –

+1

@DavidChase просто для того, чтобы выглядеть красиво, давайте разберемся. Здесь HTML, JS. :) – melancia

Смежные вопросы