如何高效地逐步执行jQuery代码?
如何高效地逐步执行jQuery代码?
我只是用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代码或设置断点并让它触发断点。
- 你无法看到任何中间值,比如$(this)是什么,或者为什么可能会得到一个错误的高度值,而无需逐步执行大量外来的jQuery代码。
- 你无法像在传统循环中一样中断each循环(使用break或return),因为它不是一个真正的循环。循环在.each()函数内部。这里看起来像一个循环的东西只是函数调用的内部。
- 如果我想知道为什么在循环中得到一个错误的高度值,有没有办法在不经过大量jQuery代码的情况下弄清楚这一点?
那么,我在这里错过了什么?逐步执行这种代码是不是变得不那么方便了?我是否错过了一些内建在jQuery框架中的魔法技巧来帮助解决这个问题?或者使用这种风格的库的代价是你必须完全改变如何调试问题。
我应该这样做吗?
- 在有问题的地方将中间值分配给本地变量,以便更容易检查它们,而不需逐步执行jQuery函数。
- 在断点之间移动,而不是逐行执行。
- 学会如何高效地进入和执行jQuery调用,以回答某些问题。
你们是如何做的?我错过了什么?
我应该提到我在FF5中使用Firebug和在Chrome中使用内置的调试器(现在更经常使用Chrome)。是的,调试时我使用的是debug(非压缩)版本的jQuery。所以,这不是关于你使用哪个调试器的问题,而是关于如何有效地使用调试器逐步执行jQuery代码的问题。