`
keel
  • 浏览: 45199 次
社区版块
存档分类
最新评论

jQuery中文入门指南,翻译加实例,jQuery的起点教程(二)

阅读更多
三.Find me:使用选择器和事件
jQuery提供两种方式来选择html的elements,第一种是用CSS和Xpath选择器联合起来形成一个字符串来传送到jQuery的构造器(如:$("div > ul a"));第二种是用jQuery对象的几个methods(方法)。这两种方式还可以联合起来混合使用。

为了测试一下这些选择器,我们来试着在我们starterkit.html中选择并修改第一个ordered list.

一开始,我们需要选择这个list本身,这个list有一个ID叫“orderedlist”,通常的javascript写法是document.getElementById("orderedlist").在jQuery中,我们这样做:
$(document).ready(function() {
$("#orderedlist").addClass("red");
});

这里将starterkit中的一个CSS样式red附加到了orderedlist上(译者Keel注:参考测试包中的css目录下的core.css,其中定义了red样式)。因此,在你刷新了starterkit.html后,你将会看到第一个有序列表(ordered list )背景色变成了红色,而第二个有序列表没有变化.

现在,让我们添加一些新的样式到list的子节点.
$(document).ready(function() {
$("#orderedlist >
li").addClass("blue");
});

这样,所有orderedlist中的li都附加了样式blue。

现在我们再做个复杂一点的,当把鼠标放在li对象上面和移开时进行样式切换,但只在list的最后一个element上生效。
$(document).ready(function() {
$("#orderedlist
li:last").hover(function() {
$(this).addClass("green");
}, function() {
$(this).removeClass("green");
});
});


还有大量的类似的CSSXPath例子,更多的例子和列表可以在这里找到。
(译者Keel注:入门看此文,修行在个人,要想在入门之后懂更多,所以这段话的几个链接迟早是要必看的!不会又要翻译吧...^_^!)

每一个onXXX事件都有效,如onclick,onchange,onsubmit等,都有jQuery等价表示方法(译者Keel注:jQuery不喜欢onXXX,所以都改成了XXX,去掉了on)。其他的一些事件,如ready和hover,也提供了相应的方法。

你可以在Visual jQuery找到全部的事件列表,在Events栏目下。

用这些选择器和事件你已经可以做很多的事情了,但这里有一个更强的好东东!

$(document).ready(function() {
$("#orderedlist").find("li").each(function(i) {
$(this).html(
$(this).html() + " BAM! " + i );
});
});


find() 让你在已经选择的element中作条件查找,因此 $("#orderedlist).find("li") 就像 $("#orderedlist li"). each()一样迭代了所有的li,并可以在此基础上作更多的处理。 大部分的方法,如addClass(), 都可以用它们自己的 each() 。在这个例子中, html()用来获取每个li的html文本, 追加一些文字,并将之设置为li的html文本。译者Keel注:从这个例子可以看到.html()方法是获取对象的html代码,而.html('xxx')是设置'xxx'为对象的html代码)

另一个经常碰到的任务是在没有被jQuery覆盖的DOM元素上call一些方法,想像一个在你用AJAX方式成功提交后的reset:



$(document).ready(function() {
// use this to reset a
single form
$("#reset").click(function() {
$("#form")[0].reset();
});
});

(译者Keel注:这里作者将form的id也写成了form,源文件有<form id="form">,这是非常不好的写法,你可以将这个ID改成form1或者testForm,然后用$("#form1")或者$("#testForm")来表示它,再进行测试。)

这个代码选择了所有ID为"form"的元素,并在其第一个上call了一个reset()。如果你有一个以上的form,你可以这样做:

$(document).ready(function() {
// use this to reset
several forms at once
$("#reset").click(function() {
$("form").each(function() {
this.reset();
});
});
});

(译者Keel注:请注意一定要亲自将这些代码写在custom.js中并在starterkit.html上测试效果才能有所体会!必要时要观察starterkit.html的html代码)

这样你在点击Reset链接后,就选择了文档中所有的form元素,并对它们都执行了一次reset()。

还有一个你可能要面对的问题是不希望某些特定的元素被选择。jQuery 提供了filter() 和not() 方法来解决这个问题。 filter()以过滤表达式来减少不符合的被选择项, not()则用来取消所有符合过滤表达式的被选择项. 考虑一个无序的list,你想要选择所有的没有ul子元素的li元素。

$(document).ready(function() {
$("li").not("[ul]").css("border", "1px solid black");
});


这个代码选择了所有的li元素,然后去除了没有ul子元素的li元素。刷新浏览器后,所有的li元素都有了一个边框,只有ul子元素的那个li元素例外。

(译者Keel注:请注意体会方便之极的css()方法,并再次提醒请务必实际测试观察效果,比方说换个CSS样式呢?再加一个CSS样式呢?像这样:$("li").not("[ul]").css("border", "1px solid black").css("color","red");)

上面代码中的[expression] 语法是从XPath而来,可以在子元素和属性(elements and attributes)上用作过滤器,比如你可能想选择所有的带有name属性的链接:
$(document).ready(function() {
$("a[@name]").background("#eee");
});


这个代码给所有带有name属性的链接加了一个背景色。译者Keel注:这个颜色太不明显了,建议写成$("a[@name]").background("red");)

更常见的情况是以name来选择链接,你可能需要选择一个有特点href属性的链接,这在不同的浏览器下对href的理解可能会不一致,所以我们的部分匹配("*=")的方式来代替完全匹配("="):
$(document).ready(function() {
$("a[@href*=/content/gallery]").click(function() {
// do something with
all links that point somewhere to /content/gallery
});
});



到现在为止,选择器都用来选择子元素或者是过滤元素。另外还有一种情况是选择上一个或者下一个元素,比如一个FAQ的页面,答案首先会隐藏,当问题点击时,答案显示出来,jQuery代码如下:
$(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();
}
});
});



这里我们用了一些链式表达法来减少代码量,而且看上去更直观更容易理解。像'#faq' 只选择了一次,利用end()方法,第一次find()方法会结束(undone),所以我们可以接着在后面继续find('dt'),而不需要再写$('#faq').find('dt')。

在点击事件中的,我们用 $(this).next() 来找到dt下面紧接的一个dd元素,这让我们可以快速地选择在被点击问题下面的答案。
(译者Keel注:这个例子真是太酷了,FAQ中的答案可以收缩!从利用next()的思路到实现这些效果都有很多地方需要我们消化,注意 if (answer.is(':visible'))用法,注意answer.slideUp();不懂的地方赶紧查我在最开始提到的两个必看API文档)

除了选择同级别的元素外,你也可以选择父级的元素。可能你想在用户鼠标移到文章某段的某个链接时,它的父级元素--也就是文章的这一段突出显示,试试这个:
$(document).ready(function() {
$("a").hover(function() {
$(this).parents("p").addClass("highlight");
}, function() {
$(this).parents("p").removeClass("highlight");
});
});


测试效果可以看到,移到文章某段的链接时,它所在的段全用上highlight样式,移走之后又恢复原样。
(译者Keel注:highlight是core.css中定义的样式,你也可以改变它,注意这里有第二个function()这是hover方法的特点,请在API文档中查阅hover,上面也有例子说明)

在我们继续之前我们先来看看这一步: jQuery会让代码变得更短从而更容易理解和维护,下面是$(document).ready(callback)的缩写法:
$(function() {
// code to execute when the DOM is ready
});


应用到我们的Hello world例子中,可以这样:
$(function() {
$("a").click(function() {
alert("Hello world!");
});
});

现在,我们手上有了这些基础的知识,我们可以更进一步的探索其它方面的东西,就从AJAX开始!

感兴趣的链接:
下一篇:http://keelsike.blogspot.com/2006/12/jqueryjquery_11.html
上一篇:http://keelsike.blogspot.com/2006/12/jqueryjquery.html
分享到:
评论

相关推荐

    jQuery中文入门指南翻译加实例jQuery的起点教程

    **jQuery中文入门指南** jQuery是一款高效、简洁的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画设计和Ajax交互。这个“jQuery中文入门指南”是为初学者准备的,旨在帮助大家快速理解并掌握...

    jQuery中文入门指南 翻译加实例 jQuery的起点教程

    这个指南是一个对jQuery库的说明,要求读者了解HTML(DOM)和CSS的一些常识。它包括了一个简单的Hello World的例子,选择器和事件基础,AJAX、FX的用法,以及如何制作jQuery的插件。 这个指南包括了很多代码,你可以...

    jQuery七天入门指南

    资源名称:jQuery 七天入门指南内容简介:jQuery 初级教程——七天入门指南中文版, pdf高清淅版,翻译加实例,学习jQuery的第一手资料,jQuery的起点教程,书中的内容涉及以实例为基础一步步说明了jQuery的工作方式...

    jQuery中文入门指南.doc

    总之,这份jQuery中文入门指南是一个很好的起点,通过实例教学,你可以快速掌握jQuery的基本用法,为进一步深入学习和应用打下坚实的基础。在实践中不断探索,结合官方API文档和在线资源,将有助于你更好地理解和...

    jQuery的起点教程.rar

    jQuery中文入门指南,翻译加实例,jQuery的起点教程 此文以实例为基础一步步说明了jQuery的工作方式。现以中文翻译(添加我的补充说明)如下。如有相关意见或建议请麻烦到我的 BLOG 写个回复或者 EMAIL 告知。

    jquery-starterkit实例

    总结,jQuery StarterKit是一个理想的起点,它通过实际的代码示例,帮助开发者快速入门jQuery,从而在Web开发的道路上迈出坚实的一步。通过深入学习和实践,开发者可以熟练掌握这一强大工具,提升开发效率,创造出更...

    jquery 新手学习常见问题解决方法

    Q0,新手必看教程: 第一步,jQuery中文入门指南,翻译加实例,jQuery的起点教程 第二步,下载手册方便查询(jQuery 1.41 中文API文档 chm版) 第三步,深刻了解jQuery对象和普通DOM对象的区别。互相转化见Q1 Q1,js...

    [jQuery入门到精通]第10章:jQueryUI常用功能实战[归纳].pdf

    jQuery UI 是一个基于 jQuery 库的用户界面交互框架,它提供了丰富的组件,帮助开发者实现复杂的交互和视觉效果,而无需依赖第三方...本文提供的实例和实践指南,为读者深入理解和使用jQuery UI提供了一个良好的起点。

    jQuery Mobile First Look

    #### 三、快速入门指南 **3.1 安装与配置** - **引入jQuery和jQuery Mobile库**:在HTML文档头部通过`&lt;script&gt;`标签引入jQuery和jQuery Mobile的JavaScript文件。 - **添加CSS样式**:通过`&lt;link&gt;`标签引入jQuery ...

    39个JQvery免豆资料地址汇总.pdf

    - **在线教程:** 包括W3Schools、jQuery API文档在内的多个在线平台提供了丰富的教程和示例。 - **书籍推荐:** - **《jQuery权威指南》:** 本书深入介绍了jQuery的核心概念、语法和最佳实践。 - **《锋利的...

    c#web应用程序入门经典

    在"C# Web应用开发入门指南"中,你将逐步学习这些知识点,并通过实例加深理解。通过实践项目,你可以巩固理论知识,最终具备独立开发C# Web应用的能力。这个过程可能充满挑战,但随着对C#和ASP.NET的理解不断深入,...

    关于JavaScript的好书推荐

    - **内容简介**:这本书没有任何技术门槛,读者只需跟着书中提供的实例编写代码,就可以逐步了解如何操作浏览器中的元素,并学会制作一些简单的页面效果。这种方式能够极大地提升初学者的兴趣和信心,让他们在编程...

    htc指南

    【HTC指南】初学者教程 在深入了解HTC(HTML Component)之前,我们先要明白,HTC是一种早期由Microsoft开发的技术,主要用于增强HTML页面的行为,它结合了HTML、脚本语言(如JavaScript)和组件技术,使得网页交互...

    AngularJS开发指南

    此外,AngularJS还提供了一种目录布局和测试脚本作为应用开发的起点,进一步降低了入门门槛。 综上所述,AngularJS是一个功能强大且全面的Web应用开发框架,尤其适用于构建CRUD应用。它通过扩展HTML语法,提供了...

    easyui+帮助文档

    EasyUI 是一个基于 jQuery 的轻量级用户界面框架,它为开发者提供了丰富的组件,包括布局、表格、对话框、菜单、按钮、表单等,使得Web应用开发更加便捷。EasyUI 的设计目标是让开发者更专注于业务逻辑,而无需过多...

Global site tag (gtag.js) - Google Analytics