jquery简单体验


Posted in Javascript onJanuary 10, 2007

jquery简单体验
query是继prototype之后又一个优秀的Javascrīpt框架。对prototype我使用不多,简单了解过。但使用上jquery之后,马上被她的优雅吸引住了。有人使用这样的一比喻来比较prototype和jquery:prototype就像Java,而jquery就像ruby.实际上我比较喜欢java(少接触Ruby 罢了)但是jquery的简单的实用的确有相当大的吸引力啊!在项目里我把jquery作为自已唯一的框架类包。使用其间也有一点点心得,其实这些心得,在jquery的文档上面也可能有讲,不过还是记下来,以备忘罢。
一,找到你了!
还记得$()这个东西吧?prototype还是DWR都使用了这个函数代替document.getElementById()。没错,jquery也跟风了。为达到document.getElementById()的目的,jquery是这样写的:

代码
var someElement = $("#myId");

看起来比其他两个框架的要多了一个#,好,看看下面的用法:
代码
$("div p");(1)
$("div.container")(2)
$("div #msg");(3)
$("table a",context);(4)

在prototype里看过这样的写法吗?第一行代码得到所有<div>标签下的<p>元素。第二行代码得到class 为container的<div>元素,第三行代码得到<div>标签下面id为msg的元素。第四行代码得到context为上下文的table里面所有的连接元素。
如果你熟悉CSS,Xpath,你会觉得这些写法很眼熟!对了。正是。看出奥妙了吧。jquery就是通过这样的方式来找到Dom对象里面的元素。跟CSS的选择器相类似。
二,Jquery对象?
jquery提供了很多便利的函数,如each(fn),但是使用这些函数的前提是:你使用的对象是Jquer对象。使一个Dom对象成为一个Jquery对象很简单,通过下面一些方式(只是一部分):

代码
var a = $("#cid");(1)
var b = $("<p>hello</p>");(2)
var c = document.createElement("table"); var tb = $(c);

三,代替body标签的onload
这个惯例,也许是除了$()之外,用得最多的地方了。下面一段代码:

代码
$(document).ready(function(){
alert("hello");
});(1)

<body onload="alert('hello');">(2)

上面两段代码是等价的。但代码1的好处是做到表现和逻辑分离。并且可以在不同的js文件中做相同的操作,即$(document).ready (fn)可以在一个页面中重复出现,而不会冲突。基本上Jqeury的很多plugin都是利用这个特性,正因为这个特性,多个plugin共同使用起来,在初始化时不会发生冲突。
不管怎么说,这个惯例可以分离javascrīpt与HTML。推荐使用。
四,事件机制
我大量使用的事件可能就是button的onclick了。以前习惯在input 元素上写onclick = "fn()",使用jquery可以使javascrīpt代码与html代码分离,保持HTML的清洁,还可以很轻松地绑定事件,甚至你可以不知道“事件”这个名词。

代码
$(document).ready(function(){
$("#clear").click(function(){
  alert("i am about to clear the table");  
  });
$("form[0]").submit(validate);
});
function validate(){
//do some form validation
}

五,同一函数实现set&get

代码
$("#msg").html();
$("#msg").html("hello");

上面两行代码,调用了同样的函数。但结果却差别很大。
第一行是返回指定元素的HTML值,第二行则是将hello这串字符设置到指定元素中。jquery的函数大部分有这样的特性。
六,ajax
这是一个ajax横行的时代。多少人,了不了解ajax的都跟着用上一把。呵。使用jquery实现ajax同样简单异常

代码
$.get("search.do",{id:1},rend);
function rend(xml){
  alert(xml);
} (1)
$.post("search.do",{id:1},rend);
function rend(xml){
  alert(xml);
} (2)

$("#msg").ajaxStart(function(){
  this.html("正在加载。。。。");
});(3)
$("#msg").ajaxSuccess(function(){
  this.html("加载完成!");
});(4)

这些都是较常用的方法,get和post用法一样。第一个参数是异步请求的url,第二个为参数,第三个回调方法。
3,4的方法会在指定的Dom对象上绑定响应ajax执行的事件。当然,jquery的AJAX相关的函数不仅是这些,有兴趣可以去研究再多。
七,渐入淡出

代码
$("#msg").fadeIn("fast");
$("#msg").fadeOut("slow");

没错,上面两行代码已经分别实现了一个id为Msg的jquery对象的渐入和淡出。做一个像Gmail一样的动态加载通知条,用jquery就那么简单。两个函数接受的参数除了快慢等,还可以接收整型,作为渐入或淡出的完成时间,单位为MS。
八,plugin
这也是一个插件的时代。
jquery插件给我的感觉清一色的清洁,简单。如Jtip,要使用它的功能,只需要在你的元素的class上加上Jtip,并引入jtip.js及其样式即可以了。其他事情插件全包。我喜欢jquery的一个重要原因是发现她已经有了很多很好,很精彩的插件。
写得很烂。可能大家看不出jquery的好处。嗯,光听是没用的,试用一下吧。你会发觉很有趣。
暂时告一段落吧。待有新的发现再来分享。

加一些Jquery的资源:
http://www.visualjquery.com/index.xml 很好的API查询站点
http://jquery.com/demo/thickbox/ 知道lightBox吧,看看Jquery是怎样实现相同的东西
http://www.codylindley.com/blogstuff/js/jtip/ Jtip,实用的提示工具
http://jquery.com/plugins/ 很多牛的插件。
http://15daysofjquery.com/jquery 的15天教程

Javascript 相关文章推荐
Code:loadScript( )加载js的功能函数
Feb 02 Javascript
关于图片按比例自适应缩放的js代码
Oct 30 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
Jun 06 Javascript
简单实现js无缝滚动效果
Feb 05 Javascript
使用Node.js搭建静态资源服务详细教程
Aug 02 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
Nov 03 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
Mar 01 Javascript
在vue中使用setInterval的方法示例
Apr 16 Javascript
Vue 数组和对象更新,但是页面没有刷新的解决方式
Nov 09 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
Mar 26 Javascript
easyUI使用分页过滤器对数据进行分页操作实例分析
Jun 01 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
Jul 20 Javascript
java script编程起步(第三课)
Jan 10 #Javascript
javascript编程起步(第二课)
Jan 10 #Javascript
javascript编程起步(第一课)
Jan 10 #Javascript
javascript 对象的定义方法
Jan 10 #Javascript
Prototype1.5 rc2版指南最后一篇之Position
Jan 10 #Javascript
Prototype使用指南之form.js
Jan 10 #Javascript
Prototype使用指南之selector.js
Jan 10 #Javascript
You might like
php 错误处理经验分享
2011/10/11 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
js 自制滚动条的小例子
2013/03/16 Javascript
jQuery取得select选择的文本与值的示例
2013/12/09 Javascript
如何判断微信内置浏览器(通过User Agent实现)
2014/09/01 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
JavaScript动态生成二维码图片
2016/04/20 Javascript
jquery获取所有选中的checkbox实现代码
2016/05/26 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
AngularJS基础 ng-keyup 指令简单示例
2016/08/02 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
2017/03/29 Javascript
基于Vuejs和Element的注册插件的编写方法
2017/07/03 Javascript
彻底理解js面向对象之继承
2018/02/04 Javascript
layer.open 按钮的点击事件关闭方法
2018/08/17 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
解决vue打包 npm run build-test突然不动了的问题
2020/11/13 Javascript
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
2014/07/18 Python
介绍Python的Django框架中的QuerySets
2015/04/20 Python
Python编程中归并排序算法的实现步骤详解
2016/05/04 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
让你的Python代码实现类型提示功能
2019/11/19 Python
python 实现兔子生兔子示例
2019/11/21 Python
Python中 Global和Nonlocal的用法详解
2020/01/20 Python
纯css实现照片墙3D效果的示例代码
2017/11/13 HTML / CSS
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
微软台湾官方网站:Microsoft台湾
2018/08/15 全球购物
人力资源专员岗位职责
2014/01/30 职场文书
大型会议策划方案
2014/05/17 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
2015年读书月活动总结
2015/03/26 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android