jQuery小教程

  不废话,先说明我们的目的。我们知道,当代浏览器(modern browsers)的文本框的聚焦(focus)样式可以通过CSS的伪类:focus来设置。假设我们有这么一段代码:

  Name:

  Password:www.mlybyby.com

  Textarea:

  则我们这样的CSS就可以搞定focus样式:

  input[type="text"]:focus, input[type="password"]:focus, textarea:focus { border: 1px solid #f00; background: #fcc; }

  简单不过,对不?你可以拿任何一款当代浏览器来测试(Firefox, Safari, IE7): http://realazy.org/lab/jquery/tut/form_hover_step1.html。IE6? 呵呵,这就是本篇教程的目的所在,没错,既然IE不支持:focus,我们只能Using DOM Scripting to Plug the Holes in CSS,不过我们用jQuery来实现。

  先来看看jQuery的工作方式。jQuery使用美元符号$来返回一个jQuery对象,然后我们就可以使用jQuery提供的API(接口。很多很多很实用,赶紧参考Visual JQuery)进行操作了。

  我们都不懂程序,对,我假设你跟我这样,只是了解一些最基本的语法(对不起大虾了,高手不要自扁身份)。既然我们不懂,我们就用CSS的方式来思维。

  首先我们要从DOM中获得type="text", type="password"的input和textarea。对,我们伟大的美金出场了,哦,是美元符号。参考http://proj.jquery.com/docs/Base/Expression/CSS/,我们知道,我们可以这样选择到他们:

  $("input[@type=‘text‘], input[@type=‘password‘], textarea")

  选中它们以后呢?我们就要靠事件(event)来处理了。:focus对应的的事件是onfocus,然而jQuery讨厌on,于是就是focus了,多好 (参考http://proj.jquery.com/docs/EventModule/)。于是我们知道我们该这么做:

  $("input[@type=‘text‘], input[@type=‘password‘], textarea").focus();

  嘿嘿,我们已经迈出一大步了!我们要继续告诉focus该做些什么。在jQuery中,我们通常需要一些匿名函数来帮我们干些事情,不理解不打紧,让我们继续:

  $("input[@type=‘text‘], input[@type=‘password‘], textarea").focus( function(){ } );

  我们的目的是什么?对,是给聚焦的文本框加上样式。jQuery有一个css (prop)的API,参考前面的CSS,我们可以这么写:

  css({background:"#fcc", border:"1px solid #f00"})

  bingo! 离成功仅一步之遥。我假设你知道,返回对象自身使用this。在jQuery中,返回自身当然也是this, 但是,需要返回的对象还是jQuery对象,我们还必须使用美元符号。所以是$(this)。那么:

  $("input[@type=‘text‘], input[@type=‘password‘], textarea").focus( function(){ $(this). css({background:”#fcc”, border:”1px solid #f00″})} );

  That’s it! 然后我们该怎么执行这段代码呢? 我们知道有一个body onload=""可以用,也知道有一个window.onload可以用,但jQuery提供了一个更佳的方案,让我们可以进一步分离结构与交互。

  $(document).ready(function(){

  // Your code here...

  });

  所以我们只需将我们的代码放到里面去:

  $(document).ready(function(){

  $("input[@type=‘text‘], input[@type=‘password‘], textarea").focus( function(){ $(this). css({background:"#fcc", border:"1px solid #f00"})} );

  });

  呵呵……貌似成功了。等等,我们要送佛送到西天,好人做到底……在上面的交互中,只有聚焦的情况,那么失焦的时候呢?嗯,我们不要想当然,失焦?那么聚焦的样式就自动清楚清除了嘛~不会的,除非我们明确告诉它。依瓢画葫芦:www.mlyrx120.com

  $(this).blur(function(){$(this).css({background: "transparent", border: "1px solid #ccc"})})

  嗯,说到jQuery的强大之处了,jQuery对象可以接受无数个函数回调/消息/方法(哪一种是正确说法,请高手指教),也就是传说中的Chainability。也就是说我们不必要分两行写,一气呵成:

  $(document).ready(function(){

  $("input[@type=‘text‘], input[@type=‘password‘], textarea").focus(function(){$(this).css({background:"#fcc", border:"1px solid #f00"})}).blur(function(){$(this).css({background: “transparent”, border: “1px solid #ccc”})});

  })

  啊呵,又一次貌似完成……又等一等,我们只需要针对IE啊,其他浏览器都可以使用CSS来实现,我们何苦要用JS来降低它们的处理效率呢,所以,我们用了jQuery自带的定义:

  $(document).ready(function(){

  if ($.browser.msie){

  $(”input[@type=’text’], input[@type=’password’], textarea”).focus(function(){$(this).css({background:”#fcc”, border:”1px solid #f00″})}).blur(function(){$(this).css({background: “transparent”, border: “1px solid #ccc”})});

  }

  })

  耶!我们真的完成了!嗯哪,要判断浏览器版本?似乎jQuery没有提供,但可以看看这个jQuery插件(plugin):jQBrowser . 嗯嗯,似乎忘了跟大家说,jQuery还拥有许多超强的插件!有时间我整理几个出来奉献给大家。

  对,看看我们这一步的成果:http://realazy.org/lab/jquery/tut/form_hover_step2.html,一定记得用IE6查看。

  貌似又完成了一次(汗,前边不是说我们真的完成了么),不!大家看得爽的时候还记得我是做什么的吗?对对对,是Web标准!Web标准提倡什么?结构,表现,交互相分离啊,我们把样式写到了JS里边,相信这不是好事情。难不倒我们jQuery的!我们换种思路,我们把样式在一个class里定义好,在focus的时候加上的这个class,blur的时候去掉这个class不就OK了吗?聪明……jQuery相应的API是addClass和removeClass。过程不累赘了,否则篇幅又得增加一半(我还要睡觉,明天还要上班,可怜的上班族),代码如下:

  $(document).ready(function(){

  if ($.browser.msie){

  $("input[@type=‘text‘], input[@type=‘password‘], textarea").focus(function(){$(this).addClass("ie_focus")}).blur(function(){$(this).removeClass("ie_focus")});

  }

  })

  我必须承认,我把这个class命名为ie_focus是有点变态。嗯,进一步,虽然我们这个代码不大,但我们也分离出来一个独立文件吧。这是我们的最后步骤的演示:http://realazy.org/lab/jquery/tut/form_hover_step3.html,记得看源码哦。

  很简单,对不?jQuery的威力不止于此,还有需多更酷更强的功能留待,你,和,我,共同探索。rl.82676666.com

  P.S. jQuery的代码也很优美,对不?这种函数式编程风格我个人是十分喜欢的,但是大括号,小括号敲到我手疼……所有我又深深地爱上了基本上看不到括号的Ruby,Orz…阿门,晚安……

时间: 2024-08-06 13:17:18

jQuery小教程的相关文章

【jquery基础教程】jquery事件及操作大汇总

在学习Javascript语言中,有一个优秀的Javascript库是大家都会遇到的--jquery,今天小编汇总了jquery事件及操作,现在一起来看看jquery基础教程吧! 事件 bind()        向匹配元素附加一个或更多事件处理器 blur( )        触发.或将函数绑定到指定元素的 blur 事件 change()        触发.或将函数绑定到指定元素的 change 事件 click()        触发.或将函数绑定到指定元素的 click 事件 dblc

jQuery UI 教程

jQuery UI 教程 jQuery UI 是建立在 jQuery JavaScript库上的一组用户界面交互.特效.小部件及主题.无论您是创建高度交互的 Web 应用程序还是仅仅向窗体控件添加一个日期选择器,jQuery UI 都是一个完美的选择.jQuery UI 包含了许多维持状态的小部件(Widget),因此,它与典型的 jQuery 插件使用模式略有不同.所有的 jQuery UI 小部件(Widget)使用相同的模式,所以,只要您学会使用其中一个,您就知道如何使用其他的小部件(Wi

JQuery插件开发教程

原文:JQuery插件开发教程 要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈. 学会使用jQuery并不难,因为它简单易学,并且相信你接触jQuery后肯定也使用或熟悉了不少其插件.如果要将能力上升一个台阶,编写一个属于自己的插件是个不错的选择. 本教程可能不是最精品的,但一定是最细致的. jQuery插件开发模式 软件开发过程中是需要一定的

Jquery:小知识;

Jquery:小知识: jQuery学习笔记(二):this相关问题及选择器 上一节的遗留问题,关于this的相关问题,先来解决一下. this的相关问题 this指代的是什么 这个应该是比较好理解的,this就是指代当前操作的DOM对象. 在jQuery中,this可以用于单个对象,也可以用于多个对象. $('btn').click(function(){ alert(this.innerHTML); // 单个对象,this指代当前id为btn的DOM对象 }); $('div').each

程序员都会的 35 个 jQuery 小技巧

收集的35个 jQuery 小技巧/代码片段,可以帮你快速开发. 1. 禁止右键点击 1 $(document).ready(function(){ 2 $(document).bind("contextmenu",function(e){ 3 return false; 4 }); 5 }); 2. 隐藏搜索文本框文字 1 Hide when clicked in the search field, the value.(example can be found below in t

关于jQuery小认知(后期会补充)

$这个符号在Jquery中并不陌生,什么都会用到它,$表示着jquery.一般用于自我复习( 内容部分摘于他人) $()可以是$(expresion),即css选择器. eg:$("div")   表示页面中的所有div元素.   1 $(document).ready(function(){ //这个函数的执行,是在页面加载完了之后执行,一些方法放这个函数执行,是因为如果页面没有加载完,就执行操作会出现错误 2 3 $("button").click(functi

必须学会使用的35个Jquery小技巧

query 与JS相比较,方便了许多,语法上也简便了不少,下面是Jquery常用的技巧,下面Jquery使用的方法在各个网站中都会使用到. 收集的35个 jQuery 小技巧/代码片段,可以帮你快速开发. 1. 禁止右键点击 1 2 3 4 5 $(document).ready(function(){     $(document).bind("contextmenu",function(e){         return false;     }); }); 2. 隐藏搜索文本框

JQuery强化教程 —— jQuery Easing

从jQuery API 文档中可以知道,jQuery自定义动画的函数. animate( properties [, duration] [, easing] [, complete] )有四个参数: properties:一组包含作为动画属性和终值的样式属性和及其值的集合 duration(可选):动画执行时间,其值可以是三种预定速度之一的字符串 ("slow", "normal", or "fast")或表示动画时长的毫秒数值(如:1000)

jQuery小盒子菜单效果

jQuery小盒子菜单效果 程序吧推荐下载,小盒子方式菜单,效果酷毙了... jQuery小盒子菜单效果,布布扣,bubuko.com