﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-刘文涛-随笔分类-前台代码 - JQUERY</title><link>http://www.blogjava.net/liuwentao253/category/27201.html</link><description>SPRING,设计模式,UML,Oracle</description><language>zh-cn</language><lastBuildDate>Thu, 08 Nov 2007 14:51:38 GMT</lastBuildDate><pubDate>Thu, 08 Nov 2007 14:51:38 GMT</pubDate><ttl>60</ttl><item><title>Jquery是继prototype之后又一个优秀的Javascript框架</title><link>http://www.blogjava.net/liuwentao253/archive/2007/11/08/159128.html</link><dc:creator>刘文涛</dc:creator><author>刘文涛</author><pubDate>Thu, 08 Nov 2007 09:07:00 GMT</pubDate><guid>http://www.blogjava.net/liuwentao253/archive/2007/11/08/159128.html</guid><description><![CDATA[<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td colspan="2">
            <hr />
            </td>
        </tr>
        <tr>
            <td colspan="2">
            <div class="postbodydiv" id="171273_body">
            <table width="100%">
                <tbody>
                    <tr>
                        <td>
                        <p><a href="http://jquery.com/" target="blank">Jquery</a>是继prototype之后又一个优秀的Javascript框架。对prototype我使用不多，简单了解过。但使用上jquery之后，马上被她的优雅吸引住了。有人使用这样的一比喻来比较prototype和jquery：prototype就像Java，而jquery就像ruby.实际上我比较喜欢java（少接触Ruby罢了）但是jquery的简单的实用的确有相当大的吸引力啊！在项目里我把jquery作为自已唯一的框架类包。使用其间也有一点点心得，其实这些心得，在jquery的文档上面也可能有讲，不过还是记下来，以备忘罢。 <br />
                        一，找到你了！ <br />
                        还记得$()这个东西吧？prototype还是DWR都使用了这个函数代替document.getElementById()。没错，jquery也跟风了。为达到document.getElementById()的目的，jquery是这样写的： <br />
                        <div class="code_title">代码</div>
                        <div class="code_div">
                        <div class="dp-highlighter">
                        <div class="bar"></div>
                        <ol class="dp-j">
                            <li class="alt"><span><span>var&nbsp;someElement&nbsp;=&nbsp;$(</span><span class="string">"#myId"</span><span>);&nbsp;&nbsp;</span></span></li>
                        </ol>
                        </div>
                        </div>
                        <script>render_code();</script><br />
                        看起来比其他两个框架的要多了一个#，好，看看下面的用法：
                        <p>&nbsp;</p>
                        <p>
                        <div class="code_title">代码</div>
                        <div class="code_div">
                        <div class="dp-highlighter">
                        <div class="bar"></div>
                        <ol class="dp-j">
                            <li class="alt"><span><span>$(</span><span class="string">"div&nbsp;p"</span><span>);(</span><span class="number">1</span><span>) &nbsp;&nbsp;</span></span></li>
                            <li class=""><span>$(</span><span class="string">"div.container"</span><span>)(</span><span class="number">2</span><span>) &nbsp;&nbsp;</span></span></li>
                            <li class="alt"><span>$(</span><span class="string">"div&nbsp;#msg"</span><span>);(</span><span class="number">3</span><span>) &nbsp;&nbsp;</span></span></li>
                            <li class=""><span>$(</span><span class="string">"table&nbsp;a"</span><span>,context);(</span><span class="number">4</span><span>) &nbsp;&nbsp;</span></span></li>
                        </ol>
                        </div>
                        </div>
                        <script>render_code();</script><br />
                        在prototype里看过这样的写法吗？第一行代码得到所有&lt;div&gt;标签下的&lt;p&gt;元素。第二行代码得到class为container的&lt;div&gt;元素,第三行代码得到&lt;div&gt;标签下面id为msg的元素。第四行代码得到context为上下文的table里面所有的连接元素。 <br />
                        如果你熟悉CSS，Xpath，你会觉得这些写法很眼熟！对了。正是。看出奥妙了吧。jquery就是通过这样的方式来找到Dom对象里面的元素。跟CSS的选择器相类似。 <br />
                        二，Jquery对象？ <br />
                        jquery提供了很多便利的函数，如each(fn)，但是使用这些函数的前提是：你使用的对象是Jquer对象。使一个Dom对象成为一个Jquery对象很简单，通过下面一些方式（只是一部分）： <br />
                        <div class="code_title">代码</div>
                        <div class="code_div">
                        <div class="dp-highlighter">
                        <div class="bar"></div>
                        <ol class="dp-xml">
                            <li class="alt"><span><span>var&nbsp;</span><span class="attribute">a</span><span>&nbsp;=&nbsp;$("#cid");(1) &nbsp;&nbsp;</span></span></li>
                            <li class=""><span>var&nbsp;</span><span class="attribute">b</span><span>&nbsp;=&nbsp;$("</span><span class="tag">&lt;</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>hello</span><span class="tag">&lt;/</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>");(2) &nbsp;&nbsp;</span></span></li>
                            <li class="alt"><span>var&nbsp;</span><span class="attribute">c</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">document</span><span>.createElement("table");&nbsp;var&nbsp;</span><span class="attribute">tb</span><span>&nbsp;=&nbsp;$(c); &nbsp;&nbsp;</span></span></li>
                        </ol>
                        </div>
                        </div>
                        <script>render_code();</script><br />
                        三，代替body标签的onload <br />
                        这个惯例，也许是除了$()之外，用得最多的地方了。下面一段代码： <br />
                        <div class="code_title">代码</div>
                        <div class="code_div">
                        <div class="dp-highlighter">
                        <div class="bar"></div>
                        <ol class="dp-j">
                            <li class="alt"><span><span>$(document).ready(function(){ &nbsp;&nbsp;</span></span></li>
                            <li class=""><span>&nbsp;&nbsp;alert(</span><span class="string">"hello"</span><span>); &nbsp;&nbsp;</span></span></li>
                            <li class="alt"><span>});(</span><span class="number">1</span><span>) &nbsp;&nbsp;</span></span></li>
                            <li class=""><span>&nbsp;&nbsp;</span></li>
                            <li class="alt"><span>&lt;body&nbsp;onload=</span><span class="string">"alert('hello');"</span><span>&gt;（</span><span class="number">2</span><span>） &nbsp;&nbsp;</span></span></li>
                            <li class=""><span>&nbsp;&nbsp;</span></li>
                        </ol>
                        </div>
                        </div>
                        <script>render_code();</script><br />
                        上面两段代码是等价的。但代码1的好处是做到表现和逻辑分离。并且可以在不同的js文件中做相同的操作，即$(document).ready(fn)可以在一个页面中重复出现，而不会冲突。基本上Jqeury的很多plugin都是利用这个特性，正因为这个特性，多个plugin共同使用起来，在初始化时不会发生冲突。 <br />
                        不管怎么说，这个惯例可以分离javascript与HTML。推荐使用。 <br />
                        四，事件机制 <br />
                        我大量使用的事件可能就是button的onclick了。以前习惯在input 元素上写onclick = "fn()",使用jquery可以使javascript代码与html代码分离，保持HTML的清洁，还可以很轻松地绑定事件，甚至你可以不知道&#8220;事件&#8221;这个名词。 <br />
                        <div class="code_title">代码</div>
                        <div class="code_div">
                        <div class="dp-highlighter">
                        <div class="bar"></div>
                        <ol class="dp-j">
                            <li class="alt"><span><span>$(document).ready(function(){ &nbsp;&nbsp;</span></span></li>
                            <li class=""><span>&nbsp;&nbsp;$(</span><span class="string">"#clear"</span><span>).click(function(){ &nbsp;&nbsp;</span></span></li>
                            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span class="string">"i&nbsp;am&nbsp;about&nbsp;to&nbsp;clear&nbsp;the&nbsp;table"</span><span>);&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
                            <li class=""><span>&nbsp;&nbsp;&nbsp;}); &nbsp;&nbsp;</span></li>
                            <li class="alt"><span>&nbsp;&nbsp;$(</span><span class="string">"form[0]"</span><span>).submit(validate); &nbsp;&nbsp;</span></span></li>
                            <li class=""><span>}); &nbsp;&nbsp;</span></li>
                            <li class="alt"><span>function&nbsp;validate(){ &nbsp;&nbsp;</span></li>
                            <li class=""><span>&nbsp;&nbsp;</span><span class="comment">//do&nbsp;some&nbsp;form&nbsp;validation </span><span>&nbsp;&nbsp;</span></span></li>
                            <li class="alt"><span>} &nbsp;&nbsp;</span></li>
                        </ol>
                        </div>
                        </div>
                        <script>render_code();</script><br />
                        五，同一函数实现set&amp;get <br />
                        <div class="code_title">代码</div>
                        <div class="code_div">
                        <div class="dp-highlighter">
                        <div class="bar"></div>
                        <ol class="dp-j">
                            <li class="alt"><span><span>$(</span><span class="string">"#msg"</span><span>).html(); &nbsp;&nbsp;</span></span></li>
                            <li class=""><span>$(</span><span class="string">"#msg"</span><span>).html(</span><span class="string">"hello"</span><span>); &nbsp;&nbsp;</span></span></li>
                        </ol>
                        </div>
                        </div>
                        <script>render_code();</script><br />
                        上面两行代码，调用了同样的函数。但结果却差别很大。 <br />
                        第一行是返回指定元素的HTML值，第二行则是将hello这串字符设置到指定元素中。jquery的函数大部分有这样的特性。 <br />
                        六，ajax <br />
                        这是一个ajax横行的时代。多少人，了不了解ajax的都跟着用上一把。呵。使用jquery实现ajax同样简单异常 <br />
                        <div class="code_title">代码</div>
                        <div class="code_div">
                        <div class="dp-highlighter">
                        <div class="bar"></div>
                        <ol class="dp-j">
                            <li class="alt"><span><span>$.get(</span><span class="string">"search.do"</span><span>,{id:</span><span class="number">1</span><span>},rend); &nbsp;&nbsp;</span></span></li>
                            <li class=""><span>function&nbsp;rend(xml){ &nbsp;&nbsp;</span></li>
                            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;alert(xml); &nbsp;&nbsp;</span></li>
                            <li class=""><span>}&nbsp;(</span><span class="number">1</span><span>) &nbsp;&nbsp;</span></span></li>
                            <li class="alt"><span>$.post(</span><span class="string">"search.do"</span><span>,{id:</span><span class="number">1</span><span>},rend); &nbsp;&nbsp;</span></span></li>
                            <li class=""><span>function&nbsp;rend(xml){ &nbsp;&nbsp;</span></li>
                            <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;alert(xml); &nbsp;&nbsp;</span></li>
                            <li class=""><span>}&nbsp;(</span><span class="number">2</span><span>) &nbsp;&nbsp;</span></span></li>
                            <li class="alt"><span>&nbsp;&nbsp;</span></li>
                            <li class=""><span>$(</span><span class="string">"#msg"</span><span>).ajaxStart(function(){ &nbsp;&nbsp;</span></span></li>
                            <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">this</span><span>.html(</span><span class="string">"正在加载。。。。"</span><span>); &nbsp;&nbsp;</span></span></li>
                            <li class=""><span>});(</span><span class="number">3</span><span>) &nbsp;&nbsp;</span></span></li>
                            <li class="alt"><span>$(</span><span class="string">"#msg"</span><span>).ajaxSuccess(function(){ &nbsp;&nbsp;</span></span></li>
                            <li class=""><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">this</span><span>.html(</span><span class="string">"加载完成！"</span><span>); &nbsp;&nbsp;</span></span></li>
                            <li class="alt"><span>});(</span><span class="number">4</span><span>) &nbsp;&nbsp;</span></span></li>
                        </ol>
                        </div>
                        </div>
                        <script>render_code();</script><br />
                        这些都是较常用的方法，get和post用法一样。第一个参数是异步请求的url，第二个为参数，第三个回调方法。 <br />
                        3，4的方法会在指定的Dom对象上绑定响应ajax执行的事件。当然，jquery的AJAX相关的函数不仅是这些，有兴趣可以去研究再多。 <br />
                        七，渐入淡出 <br />
                        <div class="code_title">代码</div>
                        <div class="code_div">
                        <div class="dp-highlighter">
                        <div class="bar"></div>
                        <ol class="dp-j">
                            <li class="alt"><span><span>$(</span><span class="string">"#msg"</span><span>).fadeIn(</span><span class="string">"fast"</span><span>); &nbsp;&nbsp;</span></span></li>
                            <li class=""><span>$(</span><span class="string">"#msg"</span><span>).fadeOut(</span><span class="string">"slow"</span><span>); &nbsp;&nbsp;</span></span></li>
                        </ol>
                        </div>
                        </div>
                        <script>render_code();</script><br />
                        没错，上面两行代码已经分别实现了一个id为Msg的jquery对象的渐入和淡出。做一个像Gmail一样的动态加载通知条，用jquery就那么简单。两个函数接受的参数除了快慢等，还可以接收整型，作为渐入或淡出的完成时间，单位为MS。 <br />
                        八，plugin <br />
                        这也是一个插件的时代。 <br />
                        jquery插件给我的感觉清一色的清洁，简单。如Jtip，要使用它的功能，只需要在你的元素的class上加上Jtip,并引入jtip.js及其样式即可以了。其他事情插件全包。我喜欢jquery的一个重要原因是发现她已经有了很多很好，很精彩的插件。
                        <p>&nbsp;</p>
                        <p>写得很烂。可能大家看不出jquery的好处。嗯，光听是没用的，试用一下吧。你会发觉很有趣。 <br />
                        暂时告一段落吧。待有新的发现再来分享。</p>
                        <p>加一些Jquery的资源： <br />
                        http://www.visualjquery.com/index.xml 很好的API查询站点 <br />
                        http://jquery.com/demo/thickbox/ 知道lightBox吧，看看Jquery是怎样实现相同的东西 <br />
                        http://www.codylindley.com/blogstuff/js/jtip/ Jtip，实用的提示工具 <br />
                        http://jquery.com/plugins/ 很多牛的插件。 <br />
                        </p>
                        </td>
                    </tr>
                </tbody>
            </table>
            </div>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/liuwentao253/aggbug/159128.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuwentao253/" target="_blank">刘文涛</a> 2007-11-08 17:07 <a href="http://www.blogjava.net/liuwentao253/archive/2007/11/08/159128.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>