Я только немного играл с jQuery - некоторое время использовал YUI, и, хотя я очень ценю то, что может предложить библиотека jQuery, я нахожу, что это очень больно Код jQuery в отладчике, и мне интересно, есть ли какие-либо трюки, кроме очевидных?
Возьмем простую функцию:
function findFirstShortChild(parent) {
var result = null;
$("#" + parent + " li").each(function() {
if ($(this).css("height") <= 10) {
result = this;
return(false); // break out of each() function
}
});
return(result);
}
Если функция не работает должным образом, и я решаю, что хочу ее преодолеть, она не интуитивно понятна. На самом деле вы вообще не можете пройти через это. Вам придется пройти через всевозможные коды jQuery в кучу мест. Вы не можете войти в цикл .each()
, потому что это не традиционный цикл. Я удивлен тем, насколько непроизвольно я чувствую себя в отладчике по сравнению с другими библиотеками. Итак, вот мои проблемы:
- Вы не можете проходить по строкам, иначе вы получите целую кучу функций jQuery.
- Вы не можете попасть во внутреннюю часть каждого цикла, не пройдя много вещей jQuery или не установив точку останова и не попав в точку останова.
- Вы не можете видеть, что такое промежуточные значения, такие как $(это), или почему оно может получить фиктивное значение для высоты, не пройдя через километры внешнего кода jQuery.
- Вы не можете вырваться из каждого цикла, как в обычном цикле (с перерывом или возвратом), потому что это не фактический цикл. Петля внутри функции .each(). То, что выглядит как цикл здесь, это всего лишь внутренности вызова функции.
- Что делать, если я хочу знать, почему я получаю значение фиктивного значения в цикле. Есть ли способ понять это, не пройдя много кода jQuery?
Итак, что мне здесь не хватает? Не намного ли удобнее переходить через этот код? Я пропустил некоторые магические методы, встроенные в структуру jQuery, чтобы помочь в этом? Или это цена, которую вы платите за использование этой библиотеки стилей, которые вам нужно полностью изменить, как вы отлаживаете проблемы.
Это то, что вам нужно сделать?
- Назначьте промежуточные значения локальным переменным в области проблем, чтобы вы могли более легко их проверить, не выполняя функции jQuery.
- Перемещение от точки останова до точки останова, а не переключение между строками в строке.
- Узнайте, как входить в jQuery-вызовы и через них (эффективно) отвечать на некоторые вопросы.
Как вы все это делаете? Что мне не хватает?
Я должен упомянуть, что я использую Firebug в FF5 и встроенный отладчик в Chrome (Chrome чаще, чем Firebug). И, да, я использую отладочную (неминифицированную) версию jQuery при отладке. Итак, это не вопрос о том, какой отладчик вы используете, но как вы используете отладчик для эффективного перехода через код jQuery.