JavaScript第二十天 jQuery入门

认识jQuery

jQuery是一个优秀的JavaScript库,凭借简洁的语法和跨平台的兼容性,极大地简化了JavaScript开发人员遍历HTML文档、操作DOM、处理事件、执行动画和开发ajax的操作。

$ 就是jQuery的一个简写形式。
1.$(document).ready() 方法和window.onload 有什么区别?

页面加载

window.onload与ready的区别
1.window.onload会覆盖之前的
ready的区别,不会覆盖,会叠加
2.window.onload等文档和资源都加载完成以后调用
ready只要文档加载完成以后就会调用

jQuery对象转成DOM对象

var  cr=$('#cr'); //jQuery对象
var c=cr[0]     //DOM对象  方法一
var c= cr.get(0) //DOM对象 方法二

DOM对象转成jQuery对象

只需要用 $() 把DOM对象包装起来,就可以获得一个jQuery对象了。

jQuery和其他库的冲突

1,jQuery库在其他库之后导入

2,自定义一个快捷方式

  var $j=jQuery.noConflict();//自定义一个快捷方式
            $j(function(){//使用jQuery,利用自定义快捷方式 $j
                $j('p'.click(function(){
                    alert($j(this).text())
                }))
            })
            //$('pp').()   //别的库就可以使用$了
            

3,将$的控制权让渡出来

 jQuery.noConflict();//将$控制权让渡出来
            (function($){
                $(function(){
                    $('p').click(function(){
                        alert($(this).text())
                    })
                })
            })(jQuery)
            //$('pp').()  //别的库就可以使用$了

jQuery选择器

基本选择器

id名、类名、标签名

层次选择器

	$('ul  li')  // 子孙节点
	$('ul > li') 	//子节点
	$('#li1 + li')  //下一个兄弟节点    next()可以代替
	$('#li1 ~ li')	//下面所有兄弟元素	nextAll()可以代替

过滤选择器

//基本过滤选择器
$('li:')  //第一个
$('li:last')//最后一个
$('li:not(.box)')//排除
$('li:even')//索引偶数
$('li:odd')//索引奇数
$('li:eq(2)')//索引2的元素
$('li:gt(2)')//索引大于2的元素
$('li:lt(2)')//索引小于2的元素
//内容过滤选择器
$('li:contains(我)')//选取文本包含"我"的li元素
$(':empty')//  选取不包含子元素或者文本的空元素
$('li:has(span)')//选取包含选择器匹配的元素的元素
$('li:parent')//选取含有子元素或者文本的元素
//可见性过滤选择器
$('li:hidden')//选取所有不可见元素
$('li:visible')//选取所有可见的li元素
//属性过滤选择器
$('li[title]')//有title属性的
$('li[title=you]')//属性是  you 的
$('li[title!=you]')//属性不是  you 的
$('li[title^=a]')//属性以a开头
$('li[title$=u]')//属性以u结尾
$('li[title*=u]')//属性包含u
//子元素过滤选择器
$('ul:nth-child(1)')  //下标从1开始
$('ul:nth-child(even)')  //偶数
$('ul:nth-child(odd)')  //奇数
$('ul:nth-child(3n+1)')  //公式
$('ul:first-child')  // 父元素下第一个子元素
$('ul:last-child')  //父元素下最后一个子元素
//表单对象属性过滤选择器
$('input:enabled')// 选取所有可用元素
$('input:disabled')//选取所有不可用元素
$('checkbox:checked')//选取所有被选中的元素
$('select:selected')//获取下拉框选中的元素

表单选择器

$(':input')//选取所有input textarea select  button元素
$(':text')//所有单行文本框   type=‘text’
$(':password')//密码框
$(':radio')//单选框
$(':checkbox')//多选框
$(':submit')//提交按钮
$(':reset')//重置按钮
$(':button')//普通按钮
$(':file')//上传域

$下常用方法

$.each()

第一个参数是一个数组或者对象,第二个参数是一个函数该函数有两个参数一个是下标(或者key),一个是项(或者value)函数的this即数组的项
格式:$.each(arr,function(index,item){})

$.map()

用于使用指定函数处理数组中的每个元素(或对象的每个属性),并将处理结果封装为新的数组返回。

$.map(数组,function(项,下标){})

$.extend()

将一个或多个对象的内容合并到目标对象。

$.extend(dest,src1,src2……)
将src1,src2合并到dest中,返回值为合并后的dest

2.jQuery 的属性拷贝(extend)的实现原理是什么,如何实现深拷贝?

在默认情况下,通过$.extend()合并操作不是递归的(浅拷贝);如果第一个对象的属性本身是一个对象或数组,那么它将完全用第二个对象相同的key重写一个属性。这些值不会被合并。然而,如果将 true 作为该函数的第一个参数,那么会在对象上进行递归的合并(深拷贝)。

浅拷贝(false 默认):如果第二个参数对象有的属性第一个参数对象也有,那么不会进行相同参数内部的比较,直接将第一个对象的相同参数覆盖。

深拷贝(true):如果第二个参数对象有的属性第一个参数对象也有,还要继续在这个相同的参数向下一层找,比较相同参数的对象中是否还有不一样的属性,如果有,将其继承到第一个对象,如果没有,则覆盖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值