在jQuery中用:contains过滤表格内容

2008年2月4日 – 01:31

愈发的觉得在jQuery中写东西真是简单实惠啊。看下面咯。

开课日期





上课地点




上课时段





开课日期 上课地点 上课时段 优惠价 报名
2008-01-16 徐汇 早上 2680
2008-01-30 黄埔 早上 2680
2008-01-30 徐汇 周日全天 2680

<script type="text/javascript">
$(function(){
$("#courses_select select").change(function  () {
if($(this).val()=="全部"){
$("#more_courses tbody tr").show();
}else{
$("#more_courses tbody tr").hide().filter(":contains("+$(this).val()+")").show();
}
});
});
</script>
<p>&nbsp;</p>
<div id="more_courses">
<div id="courses_select"><dl><dt>开课日期</dt><dd><select size="6">
<option>全部</option>
<option>2008-01-13</option>
<option>2008-01-30</option>
<option>2008-01-16</option>
</select> </dd><dt>上课地点</dt><dd class="hide"><select size="6">
<option>全部</option>
<option>黄埔</option>
<option>徐汇</option>
</select> </dd><dt>上课时段</dt><dd class="hide"><select size="6">
<option>全部</option>
<option>早上</option>
<option>晚上</option>
<option>周日全天</option>
</select> </dd></dl></div>
<div>
<table>
<thead>
<tr>
<th>开课日期</th><th>上课地点</th><th>上课时段</th><th>优惠价</th><th>报名</th>
</tr>
</thead>
<tbody>
<tr>
<td>2008-01-16</td>
<td>徐汇</td>
<td>早上</td>
<th>2680</th>
<td><button onclick="location.href='#'"><span></span>我要报名</button></td>
</tr>
<tr>
<td>2008-01-30</td>
<td>黄埔</td>
<td>早上</td>
<th>2680</th>
<td><button onclick="location.href='#'"><span></span>我要报名</button></td>
</tr>
<tr>
<td>2008-01-30</td>
<td>徐汇</td>
<td>周日全天</td>
<th>2680</th>
<td><button onclick="location.href='#'"><span></span>我要报名</button></td>
</tr>
</tbody>
</table>
</div>
</div>

Web Developer 汉化测试版以及 Firebug 中文汉化版下载

2008年1月21日 – 04:22

前些天我抽空汉化了一下Web Developer这个Firefox插件,他是用来查看和调试页面信息的好工具,众多的书籍中说道调试网页就会说起这个工具,还有Firebug也是一个很出色的调试工具。这位仁兄详细介绍了美妙的Firebug,强烈推荐下载使用。

这里简单的介绍下Web Developer


[quote]Web Developer 可说是网页设计师最常使用的一个 Firefox 扩充套件,它可以协助我们在设计网页时能够更加的得心易手,内建 HTML、CSS、Feed…等检验器,让我们所设计出来的网页能够符合标准化,不但可以省下日后维护的时间金钱,更能确保我们所设计出来的网页在各家不同的浏览器,均能正常地显示,且是符合我们预想的成果。其它更有取消 CSS、取消 Java、取消 JavaScript、检视或清除 Cookies…等功能。

CSS — 可编辑当前页面的CSS,并可即时显示修改效果。
Forms — Get/Post转换,显示所有表单信息。
Images — 显示图片的各种属性,可找出未设置Alt,Title等属性的图片。
Information — 最有用的两个功能:查看Cookie信息和Http Response数据,Web调试必备
Micellaneous — 最有用的功能:Clear Session Cookie。 已往调试Web,为了新开一个Session,不得不关闭IE,重新再开,现在不用啦。
Outline — 框出Table元素,Cell元素,Div元素
Resize — 模拟800*600等窗口大小,可自定义窗口大小
Tools — 验证CSS/HTML 等
View Source — 显示带关键字颜色的漂亮源代码[/quote]

如果测试中发现什么问题请及时告知,谢谢~~
如果测试没什么问题,此汉化将在官方网站上统一发布。
另外顺便发一下Firebug中文版,这个虽然不是我翻译的,但整合了一下。
如果你还没有用Firefox那快去用吧!

xpi使用方法:在firefox打开的情况下,将文件拖入firefox的窗口即可开始安装。
点击下载Firebug和Web Developer

============================================================
中邪了,这个服务器怎么不认得xpi文件,大家点下面两个链接会说文件不存在,但大家看这里,明明文件就在那嘛!莫名其妙的……

点击下载Web Developer
点击下载Firebug

jQuery 1.2 API翻译至50%

2008年1月19日 – 15:37

终于好不容易翻译到了50%了,发此文纪念一下。大家可以从 http://shawphy.com/jqueryapi/ 来查看
中间肯定有不少BUG,可以在这里给我反馈。

翻译期间发现原来的1.1版中确实也有些小错误的。
比如关于end()的翻译中,提到,如果前面的操作(对元素列表的状态)没有破坏性,则什么也不改变。
实际上,如果前面的操作(对元素列表的状态)没有破坏性,那就返回空集

当然,在新版中,关于end()的用法讲的更加明确了

[quote]回到最近的一个"破坏性"操作之前。即,将匹配的元素列表变为前一次的状态。
如果之前没有破坏性操作,则返回一个空集。所谓的"破坏性"就是指任何改变所匹配的jQuery元素的操作。这包括在 Traversing 中任何返回一个jQuery对象的函数–'add', 'andSelf', 'children', 'filter', 'find', 'map', 'next', 'nextAll', 'not', 'parent', 'parents', 'prev', 'prevAll', 'siblings' and 'slice'–再加上 Manipulation 中的 'clone'。[/quote]

注意,所有的wrap函数都不会改变原来选择的对象。

翻译真幸苦,接下来几天我将停止更新,大概到下个星期再开始更新这里。

BTW,我之所以说我翻译了50%,因为总共有6000多行,我翻译了3000行了。
目前进度是Traversing之前的所有以及Traversing中Filtering和Chaining翻译掉了。

  • Core 95%
  • Selectors 100%
  • Attributes 100%
  • Traversing 50%
  • Manipulation 0%
  • CSS 0%
  • Events 0%
  • Effetcs 0%
  • Ajax 0%
  • Utilities 0%

jQuery的学习方法

2008年1月19日 – 05:53

中文的资料不多
基本上就是几个

第一步:入门
首选的就是
jQuery的起点教程
上面那个是基础,看了上面就会有对jQuery有个大概的了解,本人就是从那个开始学起的之后就是看API了。
注意,那个是1.1的,实际中使用1.2的版本时会有差异。参看:http://shawphy.com/article.asp?id=7
以及,jQuery的精髓,选择器(重点看):http://shawphy.com/article.asp?id=8

第二步:提升
现在有的是中文版的1.1的API,可以在这里看

http://jquery.org.cn/visual/cn/index.xml

1.2仿visual的API可以看

http://shawphy.com/jqueryapi/

但这个是英文版的,中文版翻译中。
如果英文比较好,期间建议你去他们官网http://jQuery.com/去看看。会有帮助的,以及一本书Learning jQuery的英文版 http://shawphy.com/down/learningjquery.rar 可以拿来看看。据说这本书的中文版将在08年3、4月份出版,可以关注一下。

第三步,交流
不可否认,交流是很重要的。建议去国内唯一还算有点人气的jQuery社区

http://bbs.jquery.org.cn/

遇到问题那里会有些人帮你解答,我也在那里混的~~
顺便一提,http://cssrain.cn/ 收集了论坛中的很多问题。可以去那里看看精华部分。
更多资料以后再补充。

jQuery API 1.2 翻译中

2008年1月18日 – 11:45

之前从某个网站(现在想不起来名字了,得翻墙出去,如果有条件可以在里边找到链接,可能叫做kiss,感谢一下),找到了这个版本,仿visual jquery的。非常不错,就决定基于这个版本将其jQuery 1.2 的API翻译一下。
翻译真是件苦差事……
只好慢慢来了,手头还有项目呢……
现在先翻译了大概15%,已经将Core的全部和Selector的大部分翻译完成了,当然还是要校对的。
在此再感谢一下www.chinasvn.com提供了免费的svn服务器。可以帮我控制版本。如果有希望一起合作的朋友,也一起来加入翻译。当然要是会用svn就更好了~

地址:http://shawphy.com/jqueryapi/
由于尚未完成,暂时不提供本地下载的打包文件,如果需要离线文档,可以先下载英文版的:
http://shawphy.com/jqueryapi/jQuery_doc_1.2.zip

站点启用新皮肤

2008年1月18日 – 11:39

找了一个新皮肤,默认的皮肤过于囧囧有神了……
感谢FatMouse 提供了如此漂亮的皮肤,在此感激一下。

jQuery1.2选择器

2008年1月18日 – 08:10

以下的文档根据官网1.2选择器汉化,并做相应的调整及加入了部份示例。
由于实际使用中选择器在IE和非IE下会有不同的效果,请参照红色的字样。如有错误请及时联系我。
绯雨汉化:http://feiyu.asgard.cn

基本选择器

#myid 返回: <jQuery对象>
匹配一个id为myid的元素。
element 返回: <jQuery对象> 数组
匹配所有的element元素
.myclass 返回: <jQuery对象> 数组
匹配所有class为myclass的元素
* 返回: <jQuery对象> 数组
匹配所有元素。该选择器会选择文档中所有的元素,包括html,head,body
selector1,selector2,selectorN 返回: <jQuery对象> 数组
匹配所有满足selector1或selector2或selectorN的元素

层次选择

elementParent elementChild 返回: <jQuery对象> 数组
匹配elementParent下的所有子元素elementChild。例如:$("div p") 选择所有div下的p元素
elementParent > elementChild 返回: <jQuery对象> 数组
匹配elementParent下的子元素elementChild。例如:$("div>p") 选择所有上级元素为div的p元素
prev+next 返回: <jQuery对象> 数组
匹配prev同级之后紧邻的元素next。例如:$("h1+div") 选择所有div同级之前为h1的元素(<h1 /><div />)
prev ~ siblings 返回: <jQuery对象> 数组
匹配prev同级之后的元素siblings。例如:$("h1~div") 可以匹配(<h1 /><div /><div />)

基本滤镜

:first 返回: <jQuery对象>
匹配第一个元素
:last 返回: <jQuery对象>
匹配最后一个元素
:not(selector) 返回: <jQuery对象> 数组
匹配不满足selector的元素
:has(selector) 返回: <jQuery对象> 数组
匹配包含满足selector的元素。此选择器为1.2新增
:even 返回: <jQuery对象> 数组
从匹配的元素集中取序数为偶数的元素。
:odd 返回: <jQuery对象> 数组
从匹配的元素集中取序数为奇数的元素。
:eq(index) 返回: <jQuery对象> 数组
从匹配的元素集中取第index个元素
:gt(index) 返回: <jQuery对象> 数组
从匹配的元素中取序数大于index的元素
:lt(index) 返回: <jQuery对象> 数组
从匹配的元素中取序数小于index的元素
:header 返回: <jQuery对象> 数组
匹配所有的标题元素,例如h1,h2,h3……hN。此选择器为1.2新增
:animated 返回: <jQuery对象> 数组
匹配正在执行动画的元素。此选择器为1.2新增
:empty 返回: <jQuery对象> 数组
匹配所有没有子元素(包括文本内容)的元素
:parent 返回: <jQuery对象> 数组
匹配包含子元素(包含文本内容)的所有元素
:contains(text) 返回: <jQuery对象> 数组
匹配所有含有text的元素
:hidden 返回: <jQuery对象> 数组
匹配所有隐藏的元素,包含属性type值为hidden的元素
:visible 返回: <jQuery对象> 数组
匹配所有非隐藏的元素

子元素滤镜

E:nth-child(index/even/odd/equation) 返回: <jQuery对象> 数组
匹配所有E在其父元素下满足(index/even/odd/equation)条件的集合。注:下标从1开始
E:first-child 返回: <jQuery对象> 数组
匹配所有E在其父元素下是第一个子元素的集合。例如:HTML(<div><p id="p1"></p></div><div><p id="p2"></p><p id="p3"></p></div>"),使用$("p:first-child"),选取:<p id="p1"></p><p id="p2"></p>
E:last-child 返回: <jQuery对象> 数组
匹配所有E在其父元素下是最后一个子元素的集合。例如:同上的HTML,使用$("p:last-child"),选取:<p id="p1"></p><p id="p3"></p>
E:only-child 返回: <jQuery对象> 数组
匹配所有E是其父元素的唯一子元素的集合。例如:同上的HTML,使用$("p:only-child"),选取:<p id="p1"></p>

表单滤镜

:input 返回: <jQuery对象> 数组
匹配所有的input、textarea、select、button
:text 返回: <jQuery对象> 数组
匹配文本域。注:在IE浏览器下,选择的对象是所有type属性为text的元素,在非IE浏览器下,选择的对象是input元素type属性为text的元素
:password 返回: <jQuery对象> 数组
匹配密码域。注:在IE浏览器下,选择的对象是所有type属性为password的元素,在非IE浏览器下,选择的对象是input元素type属性为password的元素
:radio 返回: <jQuery对象> 数组
匹配单选按钮。注:在IE浏览器下,选择的对象是所有type属性为radio的元素,在非IE浏览器下,选择的对象是input元素type属性为radio的元素
:checkbox 返回: <jQuery对象> 数组
匹配复选框。注:在IE浏览器下,选择的对象是所有type属性为checkbox的元素,在非IE浏览器下,选择的对象是input元素type属性为checkbox的元素
:submit 返回: <jQuery对象> 数组
匹配提交按钮。注:在IE浏览器下,选择的对象是所有type属性为submit的元素,在非IE浏览器下,选择的对象是input元素type属性为submit的元素和button元素type属性为空或为submit的元素
:image 返回: <jQuery对象> 数组
匹配图像域。注:在IE浏览器下,选择的对象是所有type属性为image的元素,在非IE浏览器下,选择的对象是input元素type属性为image的元素
:reset 返回: <jQuery对象> 数组
匹配重置按钮。注:在IE浏览器下,选择的对象是所有type属性为reset的元素,在非IE浏览器下,选择的对象是input或button元素type属性为reset的元素
:button 返回: <jQuery对象> 数组
匹配按钮。注:在IE浏览器下,选择的对象是所有type属性为button的元素和元素名为button的元素,在非IE浏览器下,选择的对象是input元素type属性为button的元素和元素名为button的元素
:file 返回: <jQuery对象> 数组
匹配文件域。注:在IE浏览器下,选择的对象是所有type属性为file的元素,在非IE浏览器下,选择的对象是input元素type属性为file的元素
:enabled 返回: <jQuery对象> 数组
匹配所有可用的元素。注:即:not(:disabled),参考:disabled的注释
:disabled 返回: <jQuery对象> 数组
匹配所有禁用的元素。注:在非IE浏览器下,选择的对象是禁用的表单元素
:checked 返回: <jQuery对象> 数组
匹配所有被选中的表单。注:在IE浏览器下,选择的对象是含有checked属性的所有元素
:selected 返回: <jQuery对象> 数组
匹配所有选择的表单。注:在IE浏览器下,选择的对象是含有selected属性的所有元素

属性滤镜

[attribute] 返回: <jQuery对象> 数组
匹配拥有attribute属性的元素
[attribute=value] 返回: <jQuery对象> 数组
匹配属性attribute为value的元素
[attribute!=value] 返回: <jQuery对象> 数组
匹配属性attribute不为value的元素
[attribute^=value] 返回: <jQuery对象> 数组
匹配属性attribute的值以value开始的元素
[attribute$=value] 返回: <jQuery对象> 数组
匹配属性attribute的值以value结尾的元素
[attribute*=value] 返回: <jQuery对象> 数组
匹配属性attribute的值包含value的元素
[selector1][selector2][selectorN] 返回: <jQuery对象> 数组
匹配满足属性选择器selector1、selector2、selectorN的元素

绯雨的天空

从jQuery 1.1升级到1.2开发注意事项

2008年1月18日 – 08:05

看到绯雨的网站,非常好,介绍了不少jQuery的内容。此处转载一下1.1升级至1.2的差异性。

网上大部份的资料都是以jQuery 1.12为基础讲的。1.12至1.21更新了不少东西,如果不看官方的更新文档或者官方最新的API可能对开发造成影响。

1、选择器不支持XPath

XPath自1.2开始不再被jQuery默认支持。您可以通过插件形式来继续使用XPath,但是强烈建议您使用官方的选择器来替代XPath。

[code]$("div//p") //XPath写法
$("div p") //标准写法

$("div/p") //XPath写法
$("div>p") //标准写法

$("p/../div") //XPath写法
$("p").parent("div") //标准写法

$("div[p]") //XPath写法
$("div:has(p)") //标准写法

$("a[@href]") //XPath写法
$("a[href]") //标准写法[/code]

2、使用slice替代eq,lt,gt

eq及lt,gt方法非常好用,但官方从1.1.4开始放入了slice方法来替代它们,中间有一版本完全取消了eq(好像是1.2),然后又因为抗议太多,又把eq加回来了(群众的力量是强大的),但是难保eq在以后的版本还会继续存在。建议换成slice

[code]$("p").eq(0) //使用eq方法
$("p").slice(0,1) //使用slice方法

$("p").lt(2) //使用lt方法
$("p").slice(0,2) //使用slice方法

$("p").gt(2) //使用lt方法
$("p").slice(3) //使用slice方法[/quote]

3、contains方法官方不再赞成使用(有被取消掉的可能)

$("p").contains('text') //使用contains方法
$("p").filter(":contains(text)") //使用filter方法+选择器

4、loadIfModified,getIfModified,ajaxTimeout方法被取消

这3个方法应该算是冷门方法了,用的人应该是很少很少,替代方法如下。

[code]$("#elem").loadIfModified("some.asp") //使用loadIfModified方法
$.ajax({ //使用ajax方法(JSON参数里加入了ifModified)
url: "some.asp",
ifModified: true,
success: function(html) {
$("#elem").html(html)
}

});

$("#elem").getIfModified("some.asp") //使用getIfModified方法
$.ajax({ //使用ajax方法(JSON参数里加入了ifModified)
url: "some.asp",
ifModified: true

});

$.ajaxTimeout(3000) //使用ajaxTimeout方法
$.ajaxSetup({timeout: 3000}) //使用ajaxSetup方法[/code]

此外,版本更新里对动画效果也做了修改,具体看官方API的animate部份。此文档以1.1.4和1.2的更新说明为基础写的,可以上官网查看对应的原版更新文档。
1.2的选择器:http://shawphy.com/article.asp?id=8

在jQuery中利用AJAX加载XML数据并解析

2008年1月18日 – 07:25

被cssrain翻了N多的关于AJAX加载XML的帖子尸体。。。。
总结一下:

1,Content-Type
很多时候无法解析就是Content-Type的问题。
如果本身就是xml文件,请跳过这一步
动态生成的XML一定要将其设置为text/xml,否则默认就是text/html也就是普通的文本了。
常见语言的Content-Type设置

  1. header("Content-Type:text/xml");    //php
  2. response.ContentType="text/xml"   //asp
  3. response.setHeader("ContentType","text/xml");  //jsp

2,xml结构。
XML一定要封闭的,很重要!
例:
错误的XML

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.         <name>zhangsan</name>
  3.         <id>1</id>
  4.         <name>lisi</name>
  5.         <id>2</id>

正确的

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <stulist>
  3.         <student  email="1@1.com"> 
  4.                 <name>zhangsan</name>
  5.                 <id>1</id>
  6.         </student>
  7.         <student  email="2@2.com">
  8.                <name>lisi</name>
  9.                 <id>2</id>
  10.         </student>
  11. </stulist>

3,解析
这里引用macnie的
遍历student(这里还是用上面那个XML,子节点是student)

  1. $.ajax({
  2.     url:'ajax.asp',
  3.     type: 'GET',
  4.     dataType: 'xml',//这里可以不写,但千万别写text或者html!!!
  5.     timeout: 1000,
  6.     error: function(xml){
  7.         alert('Error loading XML document'+xml);
  8.     },
  9.     success: function(xml){
  10.         $(xml).find("student").each(function(i){
  11.             var id=$(this).children("id"); //取对象
  12.             var idvalue=$(this).children("id").text(); //取文本
  13.             alert(id_value);//这里就是ID的值了。
  14.             alert($(this).attr("email")); //这里能显示student下的email属性。
  15.  
  16.             //最后么输出了,这个是cssrain的写法,貌似比macnie更JQ一点
  17.             $('<li></li>')
  18.                 .html(id_value)
  19.                 .appendTo('ol');
  20.         });
  21.     }
  22. });

最后补充一条:保证服务器端是utf-8的编码,否则会乱码!

好啦,完工了,其实也不复杂,对吧?

jQuery 1.2.2发布信息的简单翻译

2008年1月18日 – 04:23

jQuery发布

[b]
jquery 1.2.2 完整版:[本站下载] 93.1 KB (推荐供测试、开发、学习用)
jquery 1.2.2 Packed压缩版:[本站下载] 28.6 KB (推荐没有开通GZip的网站使用)
jquery 1.2.2 去注释空格版:[本站下载] 51.4 KB (GZizp压缩后15kb。推荐开通GZip的网站使用)
[/b]
2008-1-14日,这个版本是针对jQuery 1.2的BUG修复,你可以在Bug Tracker查看详细列表

重大改变
$(DOMElement)提升300%速度(此处鼓吹的不高兴翻译了……大家自己看表,并结合实践再判断吧

Browser1.2.1 (ms)1.2.2 (ms)
Firefox 2 0.041 0.015
Firefox 3 0.033 0.01
Safari 3 0.017 0.005
Opera 9 0.023 0.004
IE 6 0.04 0.03

.ready()改变

  • IE中改变较多,我们不再必须写一个document.write(),感谢Diego Perini的灵感。
  • 所有浏览器都是等CSS就绪后执行脚本了而不只是DOM,因为用户希望在CSS加载后判断某个元素是否可见以及高度等信息。这次在Safari和Opera中实现了。
  • $(document).bind("ready", fn);你可以用bind来监控ready了。当然以往的.ready()依旧。

.bind("mouseenter") / .bind("mouseleave")
将.hover()的内核拆出两个新事件,这跟mouseover 不同 mouseout ,因为那些事件会在你进出子元素的时候也会触发,这往往不必如此。在1.2.2中,下面两段都有效:[code]$("li").hover(function(){
$(this).addClass("hover");
}, function(){
$(this).removeClass("hover");
});[/code][code]$("li").bind("mouseenter", function(){
$(this).addClass("hover");
}).bind("mouseleave", function(){
$(this).removeClass("hover");
});[/code]

.bind("mousewheel")
Brandon Aaron写的新插件,基于我们的新内核API,可以这样使用:[code]$("div").bind("mousewheel", function(event, delta){
if ( delta < 0 )
$(this).append("up");
else
$(this).append("down");
});[/code]

更复杂的:not()
虽然这个不是CSS 3的标准,但是由于大家都需要,所以我们也就加上了。
现在下面的写法都是可以用了

$(".hover:not(li.active)")

$("li:not(.active,.hover,:contains(test))")

Accept Headers
现在我们会在普通的AJAX中发送给服务器一个附加的 accept headers
如果你指定了dataType,我们就会放你发送了。具体如下

  • xml "application/xml, text/xml"
  • html "text/html"
  • script "text/javascript, application/javascript"
  • json "application/json, text/javascript"
  • text "text/plain"
  • Everything else: "*/*"

Bug Fixes

  • .clone() overhaul
  • Script evaluation overhaul
  • height() / width() overhaul
  • Cross-frame DOM manipulation
  • A few memory leaks have been resolved

Event API
这个是新的API,功能非常强大,通过上面那个新增事件的代码来学习这个强大的API。

附原文地址
http://docs.jquery.com/Release:jQuery_1.2.2