上QQ阅读APP看书,第一时间看更新
1.4.1 jQuery如何工作
假设我们用jQuery来实现ClickCounter的功能,该怎么做呢?首先,我们要产生一个网页的HTML,写一个index.html文件如下所示:
<! doctype html> <html> <body> <div> <button id="clickMe">Click Me</button> <div> Click Count: <span id="clickCount">0</span> </div> </div> <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script> <script src="./clickCounter.js"></script> </body> </html>
实际产品中,产生这样的HTML可以用PHP、Java、Ruby on Rails或者任何一种服务器端语言和框架来做,也可以在浏览器中用Mustache、Hogan这样的模板产生,这里我们只是把问题简化,直接书写HTML。
jQuery已经发展到3.x版,但已经不支持比较老的浏览器了,我们这里使用1.9.1的jQuery只是为了让这个网页在IE8上也能够运行。
上面的HTML只是展示样式,并没有任何交互功能,现在我们用jQuery来实现交互功能,和jQuery的传统一样,我们把JavaScript代码写在一个独立的文件clickCounter.js里面,如下所示:
$(function() { $('#clickMe').click(function() { var clickCounter = $('#clickCount'); var count = parseInt(clickCounter.text(), 10); clickCounter.text(count+1); }) })
用浏览器打开上面创造的index.html,可以看到实际效果和我们写的React应用一模一样,但是对比这两段程序可以看出差异。
在jQuery的解决方案中,首先根据CSS规则找到id为clickCount的按钮,挂上一个匿名事件处理函数,在事件处理函数中,选中那个需要被修改的DOM元素,读取其中的文本值,加以修改,然后修改这个DOM元素。
选中一些DOM元素,然后对这些元素做一些操作,这是一种最容易理解的开发模式。jQuery的发明人John Resig就是发现了网页应用开发者的这个编程模式,才创造出了jQuery,其一问世就得到普遍认可,因为这种模式直观易懂。但是,对于庞大的项目,这种模式会造成代码结构复杂,难以维护,每个jQuery的使用者都会有这种体会。