jfr*_*d00 26 javascript debugging 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);
}
Run Code Online (Sandbox Code Playgroud)
如果功能没有按预期工作,我决定要逐步完成它,它根本不直观.事实上,你根本无法真正介入它.你必须在一堆地方经历各种各样的jQuery代码.你不能进入.each()循环,因为它实际上不是传统的循环.与其他库相比,我对调试器中的无效感觉感到惊讶.所以,这是我的问题:
那么,我在这里错过了什么?通过这种代码是不是很方便?我是否遗漏了jQuery框架内置的一些神奇技术来帮助解决这个问题?或者是您使用此样式库所付出的代价,您必须完全更改调试问题的方式.
这是你要做的吗?
你们都是这样做的?我错过了什么?
我应该提一下,我在FF5中使用Firebug,在Chrome中使用内置调试器(Chrome现在比Firebug更频繁).并且,是的,我在调试时使用jQuery的调试(非缩小)版本.因此,这不是关于您使用哪个调试器的问题,而是您如何使用调试器有效地逐步执行jQuery代码.
Arx*_*sos 13
我正在使用Firebug来调试jQuery代码,其中包含一些jQuery调试扩展:
FireQuery是与Firebug集成的Firefox扩展
- 在Firebug Console和DOM检查器中智能地呈现jQuery表达式
- 附加的jQuery数据是一等公民
- jover集合中的元素在悬停时突出显示
- jQuerify:使您能够将jQuery注入任何网页
- jQuery Lint:使您能够在加载时自动将jQuery Lint注入页面(非常适合特殊代码验证)
Firefinder是Firebug的附加组件,用于帮助查找与所选CSS选择器或XPath表达式匹配的HTML元素.您还可以在悬停时或通过上下文菜单自动选择元素.
- 你不能逐行执行,否则你将最终得到一大堆jQuery函数.
- 如果不经历大量的jQuery内容或设置断点并让它达到断点,你就无法进入每个循环的内部.
当我想进入一个each循环并逐步调试时,我在函数中创建了一个断点,该函数被传递给each函数,然后我逐行调试,直到我到达jQuery代码.现在我在jQuery代码结束的位置创建一个新的断点,我想继续调试.
- 您无法看到任何像$(this)这样的中间值是什么,或者为什么它可能会获得高度的虚假值而不会踩过数英里的外部jQuery代码.
请查看http://msdn.microsoft.com/en-us/scriptjunkie/ee819093.this例如,您可以解释如何在内部观看("场景2"部分).本文提供了许多如何调试使用jQuery的代码的技巧.
- 你不能像在传统的循环中那样突破每个循环(使用break或return),因为它不是一个实际的循环.循环在.each()函数内.看起来像循环的东西只是函数调用的内部.
我不明白这个问题.你可以通过返回来突破每个循环false.each当函数返回false一次时,将不再调用传递给函数的函数.
- 如果我想知道为什么我在循环中获得虚假高度值该怎么办?有没有办法在没有单步执行大量jQuery代码的情况下解决这个问题?
在this按照上面的解释进行调查之后,也许您会获得更多信息.但有时需要查看jQuery代码,但我不经常这样做.当然,jQuery中也可能存在错误.:-D
是的,调试jQuery有点不同.但是我想在经过一个小小的熟悉阶段之后你会修改jQuery的调试风格.从使用jQuery时节省的时间与断点相比,从断点移动到断点是没有任何意义的.
.