??xml version="1.0" encoding="utf-8" standalone="yes"?> 有时候,囄的效果胜q千a万字Q这是毫无疑问的Q如CNNQESPNQ它们都是用了大规模的照片qȝ片放|在头版。这是一个非常有效的吸引观众
注意的方法?/p>
所以,从这里。你可以感受?4个以jQuery为基的图片展C所带来的感受?/p>
jQuery Cycle Website | Demo Pikachoose Website | Demo s3Slider Website | Demo Galleria Website | Demo slideViewer Image
Flow jQuery Gallery Scroller Spacegallery Easy
Slider jFlow Supersized Simple jQuery Slideshow CrossSlide Innerfade 希望大家会喜Ƣ这个集? 15个优U的jQuery囄qȝ?d效果Q基本都已经包含了原插g的发布地址、用方法和源代码下载?/p>
Galleriffic 是?
Mike Alsup ?jQuery Cycle
plugin 创徏的图片展C效果,包括~略图、图片标题和描述{详l功能,是一个非怸错的高质量画廊相册展C工兗?/p>
zoomimage
Q以一U独具魅力的方式展示囄效果。羃略图链接在本弹出大图,q且可以可以随意拖拽该?zhn)图片?/p>
Easy
Slider 可以实现囄或其他Q意内容,在水qx垂直方向上的滑动效果Q你q可以通过 CSS 自定义设|样式?/p>
一个源自美国ȝ Barack Obama |站的垂下滑动菜单控制的囄qȝ效果?/p>
CodaSliderQ?
又一个不错的滑动控制效果?/p>
jQuery
Slider II 的布局非常W合操作习惯Q在底部列出带滚动条的羃略图控制列表Q然后在上面昄对应囄的大图浏览,非常适合做高U相册?/p>
Beautiful
SliderQ?
光看q个效果图你q道这个插件有多棒了吧Q是的,q个插g实现的效果已l不逊色于Flash完成的效果,整体表现畅Q文字显C效果更是创意独牏V?/p>
loopedSlider是又一个Q意内Ҏ(gu)?
切换的灯片插gQ用操作简单?/p>
SpaceGallery是一个全新的jQuery插gQ点d
前图片,会自动放大消失,同时后面的图片向前展C,有一U时光机器的感觉?/p>
SmoothGallery是一个最好的
Javascript qȝ片效果之一Q可以实现各U不同的qȝ片{换效果?/p>
jQuery
Multimedia Portfolio是一个基于jQuery
的滑动效果插?除了可以展示囄之外Q还可以加入各种不同cd的多媒体文g?/p>
s3Slider是一个非常简单实用的畅qȝ片效果,q个
插g被应用在无数的WordPress专业主题模板中?/p>
菜单一直在|站中扮演着重要的角Ԍ它好比现实生zM的\标,没有它,我们会恍惚的q失方向?/p>
如果像目前的设计?/a> 一P因ؓ分类不算很多Q所以没有注重菜单的变换设计。但是,作ؓ一个大型网站或者想要酷炫风格的设计者而言Q制作出好的菜单Q也是迈向成功的一步。下面的菜单不仅仅风格夺人眼球,而且可以大大节约有限的网站空间?/p>
在这个资源共享的C会Q尤其网l体现的淋漓致。不必要花太多时间去琢磨代码Q有了这35个夺人眼球的菜单帮助你,你就潜心的研I它的表现Ş式吧?/p>
Preview + Vimeo site || Download Preview Vertical || Preview horizontal || Download2、jCal
3?a >jQuery
Week Calendar
4?a >jMonthCalendar
5?a >Date Picker
]]>1.jQuery Cycle
2.Pikachoose
3.s3Slider
4.Galleria
5.slideViewer
6.Image Flow
7.jQuery Gallery Scroller
8.Spacegallery
9.Easy Slider
10.jFlow
11.Supersized
12.Simple jQuery Slideshow
13.CrossSlide
14.Innerfade
l束
]]>1QGallerific
2QZoomImage
3QEasySlider
4QThe Slider from Barack Obama’s website
5QCodaSlider
6QjQuery Slider II
7QBeautiful Slider
Q,LoopedSlider
9QSpaceGallery
10QjQuery Popeye
11QNoobslide
12QAccessible News Slider
13QSmoothGallery
14QjQuery Multimedia Portfolio
15Qs3Slider
5. jqDock menu
7.CSS Sprites 2 – It’s JavaScript Time
15. Coda Slider
16. jQuery idTabs
24. Perspective tabs
25. Fisheye Menu
28. HoverAccordion
35. JQuery Pager
]]>
facebox是一个jquery为基的lightboxQ可昄囑փQ?divs Q或者远E页面?它的使用单,Ҏ(gu)。下载j(lu)sQ请查看例子Q然后开始n受faceboxl我们带来的乐趣?
首先我们用Facebox观看囄 Q?/font>
<a href="cssrain.jpg" rel="facebox">text</a>
仅仅q样O(jin)K?br />
然后我们在来?用Facebox观看div Q?/font>
<a href="#info" rel="facebox">text</a>
ok,p样就能简单的实现facebox了?br />
当然在ajax横行的时代,ajaxq程加蝲面也是必不可少的?br />
我们用Facebox加蝲q程的页面内容:
<a href="cssrain.html" rel="facebox">text</a>
OKQ这样就能远E加?cssrain.html 的内容,以facebox的方式显CZ?br />
q是FamSpam 上的截图
用法Q?/font>
facebox应该导入
<script src="jquery.js" type="text/javascript"></script>
<link href="/facebox/facebox.css" _fcksavedurl=""/facebox/facebox.css"" media="screen" rel="stylesheet" type="text/css"/>
<script src="/facebox/facebox.js" type="text/javascript"></script>
jQuery(document).ready(function($) {
//链接的rel属性是否具有facebox
$('a[rel*=facebox]').facebox()
})
演示
演示
下蝲
你需要在js和css里面 加上 loading囄Q和四个角的囄和边框图片?q就是你要做的?
Download Facebox v1.0
深入研究
http://famspam.com/facebox/
感谢 & 联系
感谢Facebook的理念和风格。感谢Mindy Tchieu她在工作中对我的帮助?
facebox作者Email: chris@ozmm.org
译作者Email: cssrain@gmail.com Blog:http://www.cssrain.cn
摘自【http://bbs.blueidea.com/thread-2822886-1-1.html?
]]>
解决:
jquery和prototype冲突解决, |上传的一文?我这里测试结果是错误? http://ajaxbbs.net/blog/post/71/
另一U方式是:
<script type=”text/javascript”>
jQuery.noConflict();
</script>
参? http://www.d5s.cn/archives/6, 但我q里试也有问题!
本h试通过的方?
1、将jquery.js攑ֈprototype.js前面Q这个是必须?Q?br /> 2、在jquery.js后面?变量重命名?br /> Ҏ(gu)如下Q?
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
var jQuery=$;
</script>
<script type="text/javascript" type="text/javascript" src="window.js"></script>
<!--上面q个window.js调用了jquery框架的方?->
<script type="text/javascript" type="text/javascript" src="prototype.js"></script>
3、将原来使用?Ҏ(gu)名一律替换ؓjQuery名,?("obj")替换为jQuery("obj")?
例如下面的一D代? 混合?jQuery和基于Prototype?EasyValidation:
<!-- jquery, 注意加蝲序 -->
<script src="js/jquery-1.2.6.pack.js"></script>
<script type=”text/javascript”>
var jQuery=$;
</script>
<!-- 表单验证 -->
<script src="easy_validation/lib/prototype.js" type="text/javascript"></script>
<script src="easy_validation/lib/effects.js" type="text/javascript"></script>
<script src="easy_validation/src/validation_cn.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="easy_validation/styles/style_min.css" />
<div id="contents"></div>
<script>
jQuery(document).ready(function(){
//jQuery("#contents").load("test.jsp");
jQuery("#contents").load("test.jsp?username=BeanSoft")
});
</script>
<!-- 为form增加required-validate class,标识需要验证form -->
<form id='helloworld' action="#" class='required-validate'>
<input name="user.name" class="required min-length-6 max-length-20 validate-alphanum" value="beansoft">
*密码:
<input name="user.password" type="password" class="required min-length-6 max-length-20" value="123456" >
*密码(重复):
<input name="password1" type="password" class="required equals-user.password" value="123456" >
<input type='submit' value='Submit'/>
<input type='reset' value='Reset'/>
</form>
本来是英文版的,我改了一点,提示什么的都是中文的了Q?/p>
从这里下?jquery.pstrength.js 强度验证插gQ然后在|页中引用jquery文g和这个插?/p>
然后使用以下函数
#password是你的密码框ID
Ҏ(gu)你的情况不同Q你可以自定义你的密码强度,我定义的是这L(fng)
效果如下Q?/strong>
2.
一ƾ不错的密码强度插gQ?/p>
1 jquery.pstrength插g和jquery文g
2 载入jquery文g和jquery.pstrength文g
3 HTML加入密码输入框,id=”user_password”:
4 css:
插g官方地址Q?a target="_blank">Ajax Password Strength Meter Script
最q正在用功的学习jQueryQ在琢磨了不别人写的功能之后,也开始尝试着自己开发一些功能。今天我做了一个简单的密码强度试工具?/p>
q可功能的作用可以看下面q个截图。我已经在多U浏览器中测试过它了?/p>
闲话不提Q上代码Q?/p>
你也可以把那Djavascript拿出来放在一个独立的js文g里,然后再链接到|页里也可以的?/p>
那个$(document).ready(function(){})里的W一句代码意思是_一载入把光标定位到网中W一个表单的W一个输入项上?/p>
然后再找C个输入域inputQtype="password" name="password1"。至所以要q样写,因ؓ在注册页里,往往是有两个密码输入域Q第一个name="password1"W二个名 ?password2"Q用来重复输入密码。另外呢Q在d里也有一个密码输入域Q但是它的name一般是"password"Q而不会是其它。所? 哪怕是|页中每一都插入了这DjsQ它只能在注册页里v作用Q?("input[type=password][name=password1]")? 抓到惌的东ѝ?/p>
最q我在啃诅R网重构》这本书Q努力在试提高|页的可L,甚至希望自己做的|页对盲人来说也没有障碍。我发现在把那个“误入用户名”
?lt;label>包v来,q加上for的属性,可以让盲人的d器工作容易。另外,把每个表单的提交按钮的颜色和其它按钮的颜色区分开Q也?
以增加网늚可读性?/p>
|上的资料有Q它跟prototype包会有冲H,我还没有同时使用q,q点不是很清楚,但我是发C个问题:
对于最??
长度的验证方法,作者可能考虑到大家的命名习惯不同Q同时做了minLength和minlengthQmaxLength和maxlengthQ方法,
应该哪一个都是可以的Q但对于用户Message来说Q只能够定义针对minlengthQmaxlengthQ,才能调用用户自定义的MessageQ?
否则只是调用包的默认MessageQ但具体原因q没有查清楚。同Ӟq个插g提供了本地化的消息,但对于我q里初学者来_怎么使用它还有待摸烦Q?
jQuery 是个宝库Q?jQuery 的插件体pL个取之不竭的宝库Q众多开发者在 jQuery 框架下,设计了数不清的插ӞjQuery 的特长是|页效果Q因此,它的插g库也多与 UI 有关。本文是 webdesignledger.com |站推选的2009q度最?jQuery 插g?/p>
在一个固定区域,循环昄几段内容Q这U方式很像旧时的拉洋片,2009q_q种 Web 效果大行光QjQuery 有大量与此有关的插gQ以下插件无疑是最佳的?/p>
?CSS-Tricks ?Chris Coyier 设计Q功能齐全,应用十分q泛?/p>
q个 Content Slider 插g既包含传l?#8220;前后”D模式Q又包含늠式导航?/p>
Coda-Slider 2.0 是对 Panic Coda |站上对应效果的模仿?/p>
那些需要借助 Flash 实现滑动与渐入渐出效果图片库的日子已l去q,借助 jQueryQ这U效果已l可以在本地实现Q以下是本年度备受欢q的几个 jQuery 囄库插件?/p>
q是一个基?jQuery 的图片库Q可以逐个加蝲囄q显C羃略图?/p>
一个可以高度定义的囄库插Ӟ无需对单个图片进行Q何处理,q个插g会帮你完成一切?/p>
slideViewer 会检查你的图片列表中的编P动态创建各个图片的늠览D?/p>
一个o人惊讶的囄循环展示插gQ包含各U变换效果和预加载选项Q会对图片自动改变尺总适应览器窗口?/p>
我们怿Q作为网站的DpȝQ应该越单,易用越好,然而,假如你确实希望实C些更炫的效果QjQuery 是最好的选项Q以下插件是09q最好的 jQuery D插g?/p>
?Web 设计中,表单和表格都是不是很讨h喜欢的东西,但你不得不面对,本年度出现几个不错的 jQuery 插g帮你完成q些d?/p>
q个插g帮你评估用户输入的密码是否够强壮?/p>
思义Q一个支?Ajax 又很炫的 jQuery Captcha 插gQ它使用了很人性化的验证机制?/p>
q个插g可以帮助你在表格上实现滚动条?/p>
一个式hӞ帮助你对表单中的控gq行式样控制?/p>
实现多个文g同时上传?/p>
一个很轻量?jQuery 插gQ你的表格可以扩展Q在一些商业应用中Q可以让表格更容易组l其中的内容?/p>
本文来源Q?a >http://webdesignledger.com/resources/the-best-jquery-plugins-of-2009
HTML Code
<input type="text"name="quantity"id="quantity"/><span id="errmsg"></span>
As you can see above, I’ve given the name and id of textbox to “quantity” in this example.This is the textbox which only accepts numbers (digits only). You can see “span” after textbox which is used to display the error message with fading effect using jQuery.
Javascript Code
First of all, we need to use jQuery library as we’re using the jquery’s function to accept only digits.
<script type="text/javascript"src="jquery.js"></script>
Now le’ts write the code in JavaScript using jQuery to accept only digits in textbox and displaying error with animation.
//when key is pressed in the textbox$("#quantity").keypress(function (e)
{
//if the letter is not digit then display error and don't type anything
if( e.which!=8&& e.which!=0&&(e.which<48|| e.which>57))
{
//display error message
$("#errmsg").html("Digits Only").show().fadeOut("slow");
returnfalse;
}
});
When the key is pressed, we’re using the key’s ASCII value to check which button is pressed. In first expression, delete, tab or backspace button is is checked and “8″ is the ASCII values of the Back-space. Digits are checked in the second expression. “48″ is the ASCII values of “0″ and “57″ is the ASCII values of “9″. The the ASCII values of the other digits lies between “48″ to “57″. And, if the key pressed values doesn’t lies withing these range, then we are displaying the error message with jQuery’s fading effect.
And, the “return false” statement means that this functions returns false values which means not to type anything on the text box.
此文以实例ؓ基础一步步说明了jQuery的工作方式。现以中文翻译(d我的补充说明Q如下。如有相x见或?EMAIL 告知。或者在 BLOG中留a?/p>
英文原版Q?a >http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery Q感谢原文作?Jörn Zaefferer 本文发布已征求原作者同意?/strong>
说明:在本教程发布之后Q得C几个|友的指正,寚w分内容作了修正,但在jQuery版本不断更新的情况下Q教E中的某些内容已l过Ӟ其?.3? 上版本)Q在忠于原文的基上,我将q部分内容加以标U的补充说明Q希望更多的前端开发者能Ҏ(gu)文提出宝贉|见,谢谢Q?--2009-3-10
另外我认为在学习q程?有两个API文档你要打开随时查看:
q个指南是一个对jQuery库的说明Q要求读者了解HTML(DOM)和CSS的一些常识。它包括了一个简单的Hello World的例子,选择器和事g基础QAJAX、FX的用法,以及如何制作jQuery的插件? q个指南包括了很多代码,你可以copy它们Qƈ试着修改它们Q看看生的效果?
一开?我们需要一个jQuery的库,最新的下蝲可以?a >q里扑ֈ。这个指南提供一个基本包含实例的包供下蝲.
下蝲Q?a >jQuery Starterkit
(译者Keel?一定要下蝲q个包,光看文章不实践肯定是不行的?
下蝲后解压羃Q然后用你最喜欢的文本编辑器打开starterkit.html和custom.jsq两个文件?译者Keel?q两个就是例子文?所有的例子都用q两个例子作?custom.js写jQuery代码,starterkit.html观察效果.用editPlus打开)
现在,我们已l做好了一切准备来q行q个著名?Hello world"例子.
在做所有事情之?我们要让jQueryd和处理文档的DOM,必须可能快地在DOM载入后开始执行事?所?我们用一个ready事g作ؓ处理HTML文档的开?看看我们打开的custom.jsq个文g,里面已经准备好了:
$(document).ready(function() {
// do stuff when DOM is ready
});
放一个简单的alert事g在需要等DOM完成载入,所以我们把dE稍变复杂一?在点MQ何一个链接时昄一个alert.
$(document).ready(function() {
$("a").click(function() {
alert("Hello world!");
});
});
q样在你点击面的一个链接时都会触发q个"Hello world"的提C?/p>
(译者Keel?L(fng)此代码修改custom.jsq保?然后用浏览器打开starterkit.html观察效果?
让我们看一下这些修Ҏ(gu)什么含义?("a") 是一个jQuery选择?selector),在这里,它选择所有的a标签Q译者Keel注:?lt;a></a>Q,$? ?jQuery “c?#8221;(jQuery "class")的一个别Uͼ因此$()构造了一个新的jQuery 对象(jQuery object)。函?click() 是这个jQuery对象的一个方法,它绑定了一个单M件到所有选中的标{?q里是所有的a标签),q在事g触发时执行了它所提供的alertҎ(gu).
q里有一个拟行相似功能的代码:
<a href="#" onclick="alert('Hello world')">Link</a>
不同之处很明?用jQuery不需要在每个a标签上写onclick事g,所以我们拥有了一个整z的l构文档(HTML)和一个行为文?JS),辑ֈ了将l构与行为分开的目?像我们使用CSSq求的一?
下面我们会更多地了解到选择器与事g.
jQuery提供两种方式来选择html? elementsQ第一U是用CSS和Xpath选择器联合v来Ş成一个字W串来传送到jQuery的构造器Q如Q?("div > ul a")Q;W二U是用jQuery对象的几个methods(Ҏ(gu))。这两种方式q可以联合v来合用?/p>
Z试一下这些选择器,我们来试着在我们starterkit.html中选择q修改第一个ordered list.
一开始,我们需要选择q个list本nQ这个list有一个ID?#8220;orderedlist”Q通常的javascript写法是document.getElementById("orderedlist").在jQuery中,我们q样做:
$(document).ready(function() {
$("#orderedlist").addClass("red");
});
q里starterkit中的一个CSS样式red附加Corderedlist?译者Keel注:参考测试包中的css目录下的core.cssQ其中定义了red样式)。因此,在你h了starterkit.html后,你将会看到第一个有序列?ordered list )背景色变成了U色Q而第二个有序列表没有变化.
现在Q让我们d一些新的样式到l(f)ist的子节点.
$(document).ready(function() {
$("#orderedlist > li").addClass("blue");
});
q样Q所有orderedlist中的li都附加了样式"blue"?/p>
现在我们再做个复杂一点的Q当把鼠标放在li对象上面和移开时进行样式切换,但只在list的最后一个element上生效?/p>
$(document).ready(function() {
$("#orderedlist li:last").hover(function() {
$(this).addClass("green");
}, function() {
$(this).removeClass("green");
});
});
q有大量的类似的CSS?a title="Documentation for XPath selectors">XPath例子Q更多的例子和列表可以在q里扑ֈ。(译者Keel注:入门看此文,修行在个人,要想在入门之后懂更多Q所以这D话的几个链接迟早是要必看的Q不会又要翻译吧...^_^!Q?/p>
每一个onXXX事g都有效,如onclick,onchange,onsubmit{,都有jQuery{h(hun)表示Ҏ(gu)Q译者Keel注:jQuery不喜ƢonXXXQ所以都Ҏ(gu)了XXXQ去掉了onQ?a title="Documentation for advanced events">其他的一些事?/a>Q如ready和hover,也提供了相应的方法?/p>
你可以在Visual jQuery扑ֈ全部的事件列表,在Events栏目?
用这些选择器和事g你已l可以做很多的事情了Q但q里有一个更强的好东东!
$(document).ready(function() {
$("#orderedlist").find("li").each(function(i) {
$(this).html( $(this).html() + " BAM! " + i );
});
});
find() 让你在已l选择的element中作条g查找,因此 $("#orderedlist).find("li") 像 $("#orderedlist li")一栗each()Ҏ(gu)q代了所有的liQƈ可以在此基础上作更多的处理?大部分的Ҏ(gu),如addClass(), 都可以用它们自己? each() 。在q个例子? html()用来获取每个li的html文本, q加一些文字,q将之设|ؓli的html文本。(译者Keel注:从这个例子可以看?html()Ҏ(gu)是获取对象的html代码Q?html('xxx')是设|?xxx'为对象的html代码Q?/p>
另一个经常碰到的d是在没有被jQuery覆盖的DOM元素上call一些方法,惛_一个在你用AJAX方式成功提交后的resetQ?/p>
$(document).ready(function() {
// use this to reset a single form
$("#reset").click(function() {
$("#form")[0].reset();
});
});
Q译者Keel注:q里作者将form的id也写成了formQ源文g?lt;form id="form">Q这是非怸好的写法Q你可以这个IDҎ(gu)form1或者testFormQ然后用$("#form1")? ?("#testForm")来表C它Q再q行试。)
q个代码选择了所有ID?form"的元素,q在其第一个上call了一个reset()。如果你有一个以上的formQ你可以q样做:
$(document).ready(function() {
// use this to reset several forms at once
$("#reset").click(function() {
$("form").each(function() {
this.reset();
});
});
});
Q译者Keel注:h意一定要亲自这些代码写在custom.js中ƈ在starterkit.html上测试效果才能有所体会Q必要时要观察starterkit.html的html代码Q?/p>
q样你在点击Reset链接后,选择了文档中所有的form元素Qƈ对它们都执行了一ơreset()?/p>
q? 有一个你可能要面对的问题是不希望某些特定的元素被选择。jQuery 提供了filter() 和not() Ҏ(gu)来解册个问题? filter()以过滤表辑ּ来减不W合的被选择? not()则用来取消所有符合过滤表辑ּ的被选择? 考虑一个无序的listQ你惌选择所有的没有ul子元素的li元素?/p>
$(document).ready(function() {
$("li").not("[ul]").css("border", "1px solid black");
});
q个代码选择了所有的li元素Q然后去除了没有ul子元素的li元素。刷新浏览器后,所有的li元素都有了一个边框,只有ul子元素的那个li元素例外?/p>
Q译 者Keel注:h意体会方便之极的css()Ҏ(gu)Qƈ再次提醒请务必实际测试观察效果,比方说换个CSS样式呢?再加一个CSS样式呢?像这 P$("li").not("[ul]").css("border", "1px solid black").css("color","red");Q?/p>
上面代码中的[expression] 语法是从XPath而来Q可以在子元素和属?elements and attributes)上用作过滤器Q比如你可能想选择所有的带有name属性的链接:
$(document).ready(function() {
$("a[name]").background("#eee"); //原文?#8220;$("a[@name]").background("#eee");”在jQuery1.2及以上版本中,@W号应该去除
});
q个代码l所有带有name属性的链接加了一个背景色。(译者Keel注:q个颜色太不明显了,写成$("a[name]").background("red");Q?[注:在jQuery1.2及以上版本中,@W号应该去除,下文中不再说明]
更常见的情况是以name来选择链接Q你可能需要选择一个有特点href属性的链接Q这在不同的览器下对href的理解可能会不一_所以我们的部分匚w("*=")的方式来代替完全匚w("=")Q?/p>
$(document).ready(function() {
$("a[href*=/content/gallery]").click(function() {
// do something with all links that point somewhere to /content/gallery
});
});
到现在ؓ止,选择器都用来选择子元素或者是qo元素。另外还有一U情冉|选择上一个或者下一个元素,比如一个FAQ的页面,{案首先会隐藏,当问题点LQ答案显C出来,jQuery代码如下Q?/p>
$(document).ready(function() {
$('#faq').find('dd').hide().end().find('dt').click(function() {
var answer = $(this).next();
if (answer.is(':visible')) {
answer.slideUp();
} else {
answer.slideDown();
}
});
});
q? 里我们用了一些链式表达法来减代码量Q而且看上L直观更容易理解。像'#faq' 只选择了一ơ,利用end()Ҏ(gu)Q第一ơfind()Ҏ(gu)会结?undone)Q所以我们可以接着在后面lfind('dt')Q而不需要再 ?('#faq').find('dt')?/p>
在点M件中的,我们?$(this).next() 来找到dt下面紧接的一个dd元素Q这让我们可以快速地选择在被点击问题下面的答案?/p>
Q译 者Keel注:q个例子真是太酷了,FAQ中的{案可以收羃Q从利用next()的思\到实现这些效果都有很多地斚w要我们消化,注意 if (answer.is(':visible'))用法Q注意answer.slideUp();不懂的地方赶紧查我在最开始提到的两个必看API文档Q?/p>
除了选择同别的元素外,你也可以选择父的元素。可能你惛_用户鼠标Ud文章某段的某个链接时Q它的父U元?-也就是文章的q一D늪出显C,试试q个Q?/p>
$(document).ready(function() {
$("a").hover(function() {
$(this).parents("p").addClass("highlight");
}, function() {
$(this).parents("p").removeClass("highlight");
});
});
试效果可以看到Q移到文章某D늚链接Ӟ它所在的D全用上highlight样式Q移C后又恢复原样?/p> Q译者Keel注:highlight是core.css中定义的样式Q你也可以改变它Q注意这里有W二个function()q是hoverҎ(gu)的特点,请在API文档中查阅hoverQ上面也有例子说明)
在我们l之前我们先来看看这一步: jQuery会让代码变得更短从而更Ҏ(gu)理解和维护,下面?(document).ready(callback)的羃写法Q?/p>
$(function() {
// code to execute when the DOM is ready
});
应用到我们的Hello world例子中,可以q样:
$(function() {
$("a").click(function() {
alert("Hello world!");
});
});
现在Q我们手上有了这些基的知识,我们可以更进一步的探烦其它斚w的东西,׃AJAX开始!
在这一部分我们写了一个小的AJAX应用Q它能够rate一些东西(译Keel注:是Ҏ(gu)些东西投)Q就像在youtube.com上面看到的一栗?/p>
首先我们需要一些服务器端代码,q个例子中用C一个PHP文gQ读取rating参数然后q回ratingL和^均数。看一?a >rate.php代码.
虽然q些例子也可以不使用AJAX来实玎ͼ但显C我们不会那么做Q我们用jQuery生成一个DIV容器QID?rating".
$(document).ready(function() {
// generate markup
var ratingMarkup = ["Please rate: "];
for(var i=1; i <= 5; i++) {
ratingMarkup[ratingMarkup.length] = "<a href='#'>" + i + "</a> ";
}
// add markup to container and applier click handlers to anchors
$("#rating").append( ratingMarkup.join('') ).find("a").click(function(e) {
e.preventDefault();
// send requests
$.post("rate.php", {rating: $(this).html()}, function(xml) {
// format result
var result = [
"Thanks for rating, current average: ",
$("average", xml).text(),
", number of votes: ",
$("count", xml).text()
];
// output result
$("#rating").html(result.join(''));
} );
});
});
q段代码生成?个链接,q将它们q加到id?rating"容器中,当其中一个链接被点击Ӟ该链接标明的分数׃以rating参数形式发送到rate.phpQ然后,l果以XML形式会从服务器端传回来,d到容器中Q替代这些链接?/p>
如果你没有一个安装过PHP的webserverQ你可以看看q个在线的例?/a>.
不用javascript实现的例子可以访?softonic.de 点击 "Kurz bewerten!"
更多的AJAXҎ(gu)可以?a title="Documentation for AJAX methods">q里 扑ֈQ或者看?a >API文档 下面的AJAX filed under AJAX.
Q译者Keel注:q个在线实例从国内访问还是比较慢的,点击后要{一会儿才能看到l果Q可以考虑对它q行修改Q比如加上loadingQ投后加上再投的q回链接{。此外,q个例子中还是有很多需要进一步消化的地方Q看不懂的地方请参考API文档。)
一个在使用AJAX载入内容时经常发生的问题是:当蝲入一个事件句柄到一个HTML文档Ӟq需要在载入内容上应用这些事Ӟ你不得不在内容加载完成后应用q些事g句柄Qؓ了防止代码重复执行,你可能用到如下一个function:
// lets use the shortcut
$(function() {
var addClickHandlers = function() {
$("a.clickMeToLoadContent").click(function() {
$("#target").load(this.href, addClickHandlers);
});
};
addClickHandlers();
});
现在QaddClickHandlers只在DOM载入完成后执行一ơ,q是在用hơ点d有clickMeToLoadContent q个样式的链接ƈ且内容加载完成后.
h意addClickHandlers函数是作Z个局部变量定义的Q而不是全局变量(如:function addClickHandlers() {...})Q这样做是ؓ了防止与其他的全局变量或者函数相冲突.
另一个常见的问题是关于回?callback)的参数。你可以通过一个额外的参数指定回调的方法,单的办法是将q个回调Ҏ(gu)包含在一个其它的function?
// get some data
var foobar = ...;
// specify handler, it needs data as a paramter
var handler = function(data) {
...
};
// add click handler and pass foobar!
$('a').click( function(event) { handler(foobar); } );
// if you need the context of the original handler, use apply:
$('a').click( function(event) { handler.apply(this, [foobar]); } );
用到单的AJAX后,我们可以认ؓ已经非常?#8220;web2.0”了,但是到现在ؓ止,我们q缺一些酷炫的效果。下一节将会谈到这些效?
一些动态的效果可以使用 show()
?hide()
来表?
$(document).ready(function() {
$("a").toggle(function() {
$(".stuff").hide('slow');
}, function() {
$(".stuff").show('fast');
});
});
你可以与 animate()
联合h创徏一些效?如一个带渐显的滑动效?
$(document).ready(function() {
$("a").toggle(function() {
$(".stuff").animate({
height: 'hide',
opacity: 'hide'
}, 'slow');
}, function() {
$(".stuff").animate({
height: 'show',
opacity: 'show'
}, 'slow');
});
});
很多不错的效果可以访?a >interface plugin collection. q个站点提供了很多demos和文?/p>
q些效果插g是位于jQuery插g列表的前面的Q当然也有很多其他的插gQ比如我们下一章讲到的表格排序插g?/p>
q个表格排序插g能让我们在客L(fng)按某一列进行排序,引入jQuery和这个插件的js文gQ然后告诉插件你惌哪个表格拥有排序功能?/p>
要测试这个例子,先在starterkit.html中加上像下面q一行的代码Q?/p>
<script src="lib/jquery.tablesorter.js" type="text/javascript"></script>
然后可以q样调用不着:
$(document).ready(function() {
$("#large").tableSorter();
});
现在点击表格的第一行head区域Q你可以看到排序的效果,再次点击会按倒过来的序q行排列?/p>
q个表格q可以加一些突出显C的效果Q我们可以做q样一个隔行背景色Q斑马线Q效?
$(document).ready(function() {
$("#large").tableSorter({
stripingRowClass: ['odd','even'], // Class names for striping supplyed as a array.
stripRowsOnStartUp: true // Strip rows on tableSorter init.
});
});
关于q个插g的更多例子和文档可以?tablesorter首页扑ֈ.
几乎所有的特g都是q样用的:先include插g的js文g,然后在某些元素上使用插g定义的方?当然也有一些参数选项是可以配|的
l常更新的插件列表可以从jQuery官方?on the jQuery site扑ֈ.
当你更经常地使用jQuery?你会发现你自己的代码打包成插g是很有用处的,它能方便地让你的公司或者其他hq行重用.下一章我们将谈到如何构徏一个自q插g.
写一个自qjQuery插g是非常容易的,如果你按照下面的原则来做,可以让其他h也容易地l合使用你的插g.
jQuery.fn.foobar = function() {
// do something
};
jQuery.fooBar = {
height: 5,
calculateBar = function() { ... },
checkDependencies = function() { ... }
};
你现在可以在你的插g中用这些帮助函C:
jQuery.fn.foobar = function() {
// do something
jQuery.foobar.checkDependencies(value);
// do something else
};
jQuery.fn.foobar = function(options) {
var settings = {
value: 5,
name: "pete",
bar: 655
};
if(options) {
jQuery.extend(settings, options);
}
};
现在可以无需做Q何配|地使用插g?默认的参数在此时生效:
$("...").foobar();
或者加入这些参数定?
$("...").foobar({
value: 123,
bar: 9
});
如果你release你的插g, 你还应该提供一些例子和文档,大部分的插g都具备这些良好的参考文?
现在你应该有了写一个插件的基础,让我们试着用这些知识写一个自q插g.
很多着控制所有的radio或者checkbox是否被选中,比如:
$("input[type='checkbox']").each(function() {
this.checked = true;
// or, to uncheck
this.checked = false;
// or, to toggle
this.checked = !this.checked;
});
无论何时候,当你的代码出现eachӞ你应该重写上面的代码来构造一个插?很直接地:
$.fn.check = function() {
return this.each(function() {
this.checked = true;
});
};
q个插g现在可以q样?
$('input:checkbox').check();
现在你应该还可以写出uncheck()和toggleCheck()?但是先停一?让我们的插g接收一些参?
$.fn.check = function(mode) {
var mode = mode || 'on'; // if mode is undefined, use 'on' as default
return this.each(function() {
switch(mode) {
case 'on':
this.checked = true;
break;
case 'off':
this.checked = false;
break;
case 'toggle':
this.checked = !this.checked;
break;
}
});
};
q里我们讄了默认的参数,所以将"on"参数省略也是可以?当然也可以加?on","off", ?"toggle",?
$("input[type='checkbox']").check();
$("input[type='checkbox']").check('on');
$("input[type='checkbox']").check('off');
$("input[type='checkbox']").check('toggle');
如果有多于一个的参数讄会稍E有点复?在用时如果只想讄W二个参?则要在第一个参C|写入null.
从上一章的tablesorter插g用法我们可以看到,既可以省略所有参数来使用或者通过一?key/value Ҏ(gu)重新讄每个参数.
作ؓ一个练?你可以试着?W四?/a> 的功能重写ؓ一个插?q个插g的骨架应该是像这L(fng):
$.fn.rateMe = function(options) {
var container = this; // instead of selecting a static container with $("#rating"), we now use the jQuery context
var settings = {
url: "rate.php"
// put more defaults here
// remember to put a comma (",") after each pair, but not after the last one!
};
if(options) { // check if options are present before extending the settings
$.extend(settings, options);
}
// ...
// rest of the code
// ...
return this; // if possible, return "this" to not break the chain
});
如果你想做更好的javascript开?你用一个叫 FireBug的firefox插g. 它提供了断点调试(比alert强多?、观察DOM变化{很多漂亮的功能
如果你还有未解决的问题,或者新的想法与Q你可以使用jQuery的邮件列?jQuery mailing list.
关于q个指南的Q何事情,你可以写maill作者或者发表评论在他的日志Q?a >blog.
大大感谢John Resig创造了q么好的library! 感谢jQuery community 为John提供了如此多的咖啡和其他的一?