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

推荐订阅源

V
Visual Studio Blog
C
Cisco Blogs
Help Net Security
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Scott Helme
Scott Helme
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
M
MIT News - Artificial intelligence
L
LINUX DO - 热门话题
I
InfoQ
GbyAI
GbyAI
NISL@THU
NISL@THU
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Engineering at Meta
Engineering at Meta
H
Hackread – Cybersecurity News, Data Breaches, AI and More
TaoSecurity Blog
TaoSecurity Blog
Simon Willison's Weblog
Simon Willison's Weblog
A
About on SuperTechFans
Spread Privacy
Spread Privacy
月光博客
月光博客
W
WeLiveSecurity
AWS News Blog
AWS News Blog
云风的 BLOG
云风的 BLOG
有赞技术团队
有赞技术团队
Security Latest
Security Latest
人人都是产品经理
人人都是产品经理
PCI Perspectives
PCI Perspectives
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Microsoft Azure Blog
Microsoft Azure Blog
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
T
Troy Hunt's Blog
Martin Fowler
Martin Fowler
The Hacker News
The Hacker News
T
Tor Project blog
C
CERT Recently Published Vulnerability Notes
Apple Machine Learning Research
Apple Machine Learning Research
Stack Overflow Blog
Stack Overflow Blog
K
Kaspersky official blog
Cloudbric
Cloudbric
H
Help Net Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tailwind CSS Blog
D
DataBreaches.Net
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Tenable Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - Franky
L
LINUX DO - 最新话题
MyScale Blog
MyScale Blog

博客园 - 啊不才

【转载备用】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开始的