惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
T
The Blog of Author Tim Ferriss
aimingoo的专栏
aimingoo的专栏
A
About on SuperTechFans
Stack Overflow Blog
Stack Overflow Blog
B
Blog RSS Feed
Microsoft Security Blog
Microsoft Security Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
人人都是产品经理
人人都是产品经理
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
J
Java Code Geeks
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
MongoDB | Blog
MongoDB | Blog
L
LangChain Blog
WordPress大学
WordPress大学
小众软件
小众软件
IT之家
IT之家
腾讯CDC
月光博客
月光博客
量子位
Blog — PlanetScale
Blog — PlanetScale
P
Proofpoint News Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 啊不才

【转载备用】Linux内核编译 幸运的Windows 7 Party 社区活动 django的字符替换问题 如何在屏幕中央打开一个特定的窗口 KB937061和KB947738多次安装问题 BlogEngine.Net的皮肤 [How Do I]系列学习笔记——001:学习一些技巧 继承类中override和new的区别 我提交的ACM题库的答案 『框架设计(第2版)CLR Via C#』学习笔记——使用is和as操作符来进行强制类型转换 调用Master页面上的属性 NotePad++很好用,但是我真的不想再用它了 BlogEngine的SQL Server数据库配置 关于asp:ScriptManager与Script代码块的位置关系问题 NHiBernate学习笔记(1) 使用JMail.NET时遇到的问题 ToString()方法与Convert.ToString()的差异 『框架设计(第2版)CLR Via C#』学习笔记——常量 【已解决,看后文】使用BlogEngine.net的扩展插件Silverlight Player Extension遇到的问题
jQueryinAction学习笔记——01 - 啊不才 - 博客园
啊不才 · 2009-10-20 · via 博客园 - 啊不才

一、文档就绪处理程序

先来看看下列代码
window.onload = function(){
    $("table tr:nth-child(even)").addClass("even");
};
还有第二个
$(document).ready(function(){
    $("table tr:nth-child(even)").addClass("even");
});

那么他们的细微差别在那里那?

第一段代码是浏览器延迟执行onload代码,不仅是在构建DOM树之后,也是在所有图像和其他外部资源完整的家在并且页面在浏览器窗口显示完毕之后。假如你够倒霉的话,某个图像或其他资源要花好长一段时间去加载,访问者在页面丰富的行为变得可用之前,就不得不等待图像加载完毕。

当然更好的解决方法是有的,我们只要等到文档被完整地解析,同时浏览器已经把HTML转换成DOM树形式的时候,就立刻执行脚本使其丰富的行为生效。这就是我们看到的第二段代码。

当然我们可以简写做

$(function(){
    $("table tr:nth-child(even)").addClass("even");
});

二、消除与其它库的冲突

导致冲突的库被加载之后的任何时刻,都可以调用:

jQuery.noConflict();
把$还原为非jQuery库所定义的含义。

三、扩展jQuery

jQuery虽然提供了大量的有用函数,但是设计者不可能预料所有人的需求。因此jQuery库的作者认识到了这一点,因此提供了jQuery扩展。

那么为什么我们不是自己编写代码去填写所有的空白,而是去扩展jQuery哪?因为扩展jQuery更简单,通过扩展jQuery,可以利用它提供的强大功能,特别是在元素选择方面。

下面看一个书上给的例子:jQuery没有提供用于禁用一组表单元素的函数。如果我们在Web应用中大量的使用表单,就会发现利用以下语法非常的方便:

$("form#myForm input.special").disable();

下面请看扩展jQuery的基本惯用语法:

$.fn.disable = function () {
    return this.each(function () {
        if (typeof(this.disabled) != "undifined") {
            this.disabled = true;
        }
    });
};

这样我们就可以像许多jQuery原生方法那样编写代码了:

$("form#myForm input.special").disabled().addClass("moreSpecial");

四、细节区别

li:has(a)选择器匹配的是包含<a>元素的所有<li>元素

li a选择器匹配的是<li>中的所有<a>元素

:nth-child(n) n是从1开始的

:eq(n) n是从0开始的