找回密码
 FreeOZ用户注册
查看: 1990|回复: 10
打印 上一主题 下一主题

[论坛技术] JQuery 学习笔记

[复制链接]
跳转到指定楼层
1#
发表于 23-11-2008 08:32:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除, 无法发言

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?FreeOZ用户注册

x
引用JQuery
  1. <script src="jquery.js" type="text/javascript"></script>
复制代码
  1. .........
复制代码
代码片段一
  1. ..............
复制代码
  1. $(document).ready(function() {
  2. $('.poemstanza').
  3. addClass('emphasized');
  4. });
复制代码
  • $() 工厂函数来定位已经加上类的页面的一部分
  • .addClass() 来对页面的部分加上另外的样式
  • $(document).ready() 来引发页面加载上执行代码
  • 执行扩展嵌套函数 function(){}
  • 给 .poemstanza 的DOM对象增加属性 emphasized
回复  

使用道具 举报

2#
 楼主| 发表于 23-11-2008 08:48:23 | 只看该作者

CSS选择器

提示: 作者被禁止或删除, 无法发言
在 jQuery 里,$ 是 jQuery 的缩写 (如果有冲突,也可以通过在我们自定义的 jQuery 代码中使用 jQuery 来替换 $)
jQuery 最强有力的方面是它能很容易进行 DOM 遍历
  1. $('#selectedplays > li').addClass('horizontal');
复制代码
给ID名为selectdplays的下一级子DOM对象 LI 增加horizontal属性
  1. $('#selectedplays li:not(.horizontal)').addClass('sublevel');
复制代码
查找ID名为selectdplays的所有子DOM对象 LI ,并给没有horizontal属性的对象增加属性 sublevel

  • A tag name: $('p')定位所有的标签P
  • An ID: $('#someid') 查找ID为someid的标签
  • A class: $('.someclass') 查找所有带有.someclass属性的标签
回复  

使用道具 举报

3#
 楼主| 发表于 23-11-2008 09:54:24 | 只看该作者

XPath 选择器

提示: 作者被禁止或删除, 无法发言
$('a[@title]')  选择所有带有 title 属性的链接
$('div[ol]')  所有包含一个 ol 元素的 div 元素

正则表达式的语法来指定一个字符串的开始(^)与结束($),任意(*)
  • $('a[@href^="mailto:"]').addClass('mailto');   以 mailto 开头 (^="mailto:") 的 href 属性 ([@href])
  • $('a[@href$=".pdf"]').addClass('pdflink');   以 .pdf 结尾的 href 属性的链接
  • $('a[@href*="mysite.com"]').addClass('mysite');  任意包含mysite.com的链接
回复  

使用道具 举报

4#
发表于 23-11-2008 10:02:40 | 只看该作者
学习学习!
回复  

使用道具 举报

5#
 楼主| 发表于 23-11-2008 10:12:20 | 只看该作者

:eq()、:odd() 和 :even()

提示: 作者被禁止或删除, 无法发言
$('div.horizontal:eq(1)')   从一组匹配选择带有 horizontal 类的 div 中选择第二项
  1. $(document).ready(function() {
  2. $('trdd').addClass('odd');
  3. $('tr:even').addClass('even');
  4. $('td:contains("Henry")').addClass('highlight');
复制代码
用CSS指定样式比直接在每一个超文本标签里写属性简洁,直接用Jquery指定样式到标签,就不用在每个标签里写样式名了,更简洁!

  1. $('td:contains("Henry")') //get every cell containing "Henry"
  2. .parent() //get its parent
  3. .find('td:eq(1)') //find inside the parent the 2nd cell
  4. .addClass(highlight') //add the "highlight" class to that cell
  5. .end() //revert back to the parent of the cell containing "Henry"
  6. .find('td:eq(2)') //find inside the parent the 3rd cell
  7. .addClass('highlight'); //add the "highlight" class to that cell
复制代码
回复  

使用道具 举报

6#
 楼主| 发表于 23-11-2008 10:26:19 | 只看该作者

访问 DOM 元素

提示: 作者被禁止或删除, 无法发言
如果我们想知道 id 为 #myelement 的元素的 tag name 的话,可以用:
var myTag = $('#myelement').get(0).tagName;


jQuery 提供了 .get() 的速记 , 用
$('#myelement')[0]
来代替
$('#myelement').get(0).tagName
回复  

使用道具 举报

7#
 楼主| 发表于 23-11-2008 10:28:26 | 只看该作者

上面笔记的PDF书

提示: 作者被禁止或删除, 无法发言

Learning+jquery中文版.pdf

71.92 KB, 下载次数: 3

回复  

使用道具 举报

8#
 楼主| 发表于 23-11-2008 12:41:34 | 只看该作者

事件处理

提示: 作者被禁止或删除, 无法发言
ready 的优先级高于 onload,一般使用ready来处理事件(不必等所有相关图片都下载完,只要DOM对象装载好了就可以执行)

看看怎么优化事件处理的编程方式
  1. <javascript>
  2. function doStuff(){
  3. .......................................
  4. }
  5. </javascript>
  6. <body onload="doStuff();">
  7. </body>
复制代码
可以优化为如下,把调用代码和HTML分离
  1. <javascript>
  2. function doStuff(){
  3. .......................................
  4. }
  5. window.onload = doStuff();
  6. </javascript>
复制代码
用JQuery语法写
  1. $(document).ready(function() {
  2. //.........................
  3. });
复制代码
再简化
  1. $().ready(function() {
  2. //...............................
  3. });
复制代码
还可以再简化
  1. $(function() {
  2. //..................
  3. });
复制代码
看一个例子,绑定事件到单击按钮
  1. $(document).ready(function() {
  2.     $('#switcher-large').bind('click', function() {
  3.         $('body').addClass('large');
  4.     });
  5. });
复制代码
简写bind 为 click
  1. $(document).ready(function() {
  2.     $('#switcher-large').click(function() {
  3.         $('body').addClass('large');
  4.     });
  5. });
复制代码
回复  

使用道具 举报

9#
 楼主| 发表于 23-11-2008 12:54:02 | 只看该作者

关键字this引用的是绑定当前行为的DOM元素

提示: 作者被禁止或删除, 无法发言
$(this).addClass('selected');

$('#switcher .button').removeClass('selected');

$('body').addClass('narrow').removeClass('large');

$('body').removeClass(); //移除全部类
回复  

使用道具 举报

10#
 楼主| 发表于 23-11-2008 13:08:53 | 只看该作者

复合事件toggle (折叠)

提示: 作者被禁止或删除, 无法发言
toggle 支持两个参数,第一个参数在第一次单击时调用,第二次单击调用第二个参数
  1. $(document).ready(function() {
  2.     $('#switcher h3').toggle(function() {
  3.         $('#switcher .buton').addClass('hidden');
  4.     }, function() {
  5.         $('#switcher .button').removeClass('hidden');
  6.     });
  7. });
复制代码
也可以直接使用toggleClass时间,如果连续两次调用的事件实际上是没有区别的话。
回复  

使用道具 举报

11#
发表于 23-11-2008 17:23:15 | 只看该作者
提示: 作者被禁止或删除, 无法发言
这个我熟,确实省事,而且狂多插件

评分

参与人数 1威望 +30 收起 理由
xblues + 30 那可要开贴介绍一些经验呀!

查看全部评分

回复  

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+10, 1-5-2024 12:31 , Processed in 0.047781 second(s), 31 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表