Hi all, 和很多其他框架一样,调试用了 jQuery 的代码比没用 jQuery 的代码复杂了很多,首先是调着调着就进了 jQuery 文件的里面,然后打开任意元素的 Event Listeners(我用的是 Chrome 的调试工具)得到长长的一张列表,几乎所有事件都被监听过了,而且都是 jQuery 的监听,不知道实际是否真的被监听,callback 入口实际上在哪里。想请教各位 Javascript 高手是如何解决这些问题的,谢谢。
代码里直接写 debugger, 打开 chrome development tools 执行到那里自动就断了。
简单情况直接 console.log
调试你得先看自己激活了什么事件,页面逻辑基本都是 event driven 的。找到 id className 基本就知道 callback 在哪里了。你一般都不会调试 jQuery, 只会调试自己的业务逻辑。
jQuery 的 selector 是关键。
jasminejs 可以满足你的需求。边写边学很快。phantomjs.org 还提供 a headless WebKit with JavaScript API.
@shiren1118 写测试才是解决调试的办法。实在不会写,先在 it 里用 console.log 打出来看看,再加上 except matches 函数验证。之后大脑的负担就会减轻,有问题就跑一个测试,没抓到的问题加一个用例。
@iBachue 我的意思是你先遇到的问题,用普通 console.log 方法都搞不定的代码块写测试,总比你一行一行调试来的快吧。并且调试过程中的思路你都留了下来,对代码理解也是一次梳理。代码只有理解意思后才可能找到问题。目前楼主的代码已经相当规模,还不知道有没有用到 Copy & Paste 的代码,第三方的代码片段,你不太可能一步一步去 debuger。
看下 http://ruby-china.org/topics/6076 这个帖? 用 chrome inspector 调试的话 可以 ctrl+shift+f 打开搜索面板,然后搜事件触发元素的 id 或 class,应该就能很快找到对应的 js 代码了