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

推荐订阅源

博客园 - 叶小钗
云风的 BLOG
云风的 BLOG
G
Google Developers Blog
S
SegmentFault 最新的问题
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
DataBreaches.Net
F
Fortinet All Blogs
TaoSecurity Blog
TaoSecurity Blog
D
Docker
C
Cybersecurity and Infrastructure Security Agency CISA
K
Kaspersky official blog
宝玉的分享
宝玉的分享
腾讯CDC
Google Online Security Blog
Google Online Security Blog
Recorded Future
Recorded Future
T
The Exploit Database - CXSecurity.com
T
The Blog of Author Tim Ferriss
V
V2EX
S
Securelist
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
CERT Recently Published Vulnerability Notes
A
Arctic Wolf
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
Y
Y Combinator Blog
P
Proofpoint News Feed
T
Tor Project blog
AWS News Blog
AWS News Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
博客园 - 聂微东
T
Threat Research - Cisco Blogs
B
Blog
Attack and Defense Labs
Attack and Defense Labs
L
Lohrmann on Cybersecurity
C
CXSECURITY Database RSS Feed - CXSecurity.com
阮一峰的网络日志
阮一峰的网络日志
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
N
News and Events Feed by Topic
博客园 - 司徒正美
H
Help Net Security
C
Cisco Blogs
C
Check Point Blog
S
Secure Thoughts

博客园 - 啊不才

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