##写在前面
关于JQ的常用方法(API)我感觉,其实如果JS学的还行,对于JQ的一些方法完全就是水到渠来的事。。。好了不多说,下面是我这段时间整理的一下常用发发,以便自己早上起来打炉石时候还能记些东西- -
个人总结的一些JQ基础
jquery的几种写法.
这里和原生JS的window.onload=function({code})
类似,jq也有几种类似的写法 分别是1
2
3
4
5$(document).ready(function({code}))
$(function({code}))
$().ready(function({code}))
window.onload与$(document).ready()的区别
window.onload是页面绘制完成之后执行——即所有东西都加载完成后在执行.
$(document).ready()当html绘制完成之后就执行。差别还是很明显的。特别是对于如何要操作img图片之类的元素。就需要把代码放到onload后面
$node.text()
与$node.html()
的区别
这个区别还是很明显的.1
2
3
4
5
6
7
8
9$node.text()主要是针对于文本节点。
$node.html()则是所有的元素节点
例如
<div id="wrap">
<span>Z-one
</span>
</div>
$("#wrap").text()//Z-one
$("#wrap").html()//<span>Z-one</span>
$.extend 的作用
对于这个,我记得我之前写过一个JS的一个深拷贝,想着当初那么长的代码。。。。结果到JQ这个来 就一个接口的事- -。。。。。$.extend
主要作用就是两几个对象合并到第一个对象里面,如果不想改变其他对象的值,只要将第一个参数弄成空数组就行。
例如:1
2
3
4var a=[1,2,3,4,5]
var b=[4,4,4]
var c=$.extend({},a,b)
最后C=[4,4,4,4,5]
这个就是浅拷贝很好理解,我任务extend浅拷贝还是挺无聊的.只要后面有的 完全覆盖,不管前面数组的感受。。完全没道理啊,不信看下面这个代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24var a={
name:"Z-one",
age:"23",
like:[
"wow",
"lushi",
"javascript"
],
other:{
where:"宜昌",
width:"ssss"
}
}
var b={
name:"lirui",
age:"22",
like:["run","play"],
other:{
where:"武汉",
xisw:"汉口"
}
}
var c=$.extend({},a,b)
console.log(c)
直接看图,打起来太费劲了。
可以看到如果是对于这种对象里面套着对象和数组,如果用之前那种暴力的浅拷贝就不行了,很明显这里我们需要使用到深拷贝了.方法也很简单,方法也很简单,只要用到这个参数就行。$.extend(true,{},a,b)
代码和上面类似1
var c=$.extend(true,{},a,b)
这个可以看出来深拷贝 好处 就是我先看我这个你原来有没有,如果有,就仅替换和我相同的,还不是以前浅拷贝的那种.不管啥,我直接覆盖
关于jquery的链式调用
Jquery的链式调用好处我感觉就一点:
- 好处:节省代码,也很好理解逻辑
- 原理:因为可以理解jquery调用后返回的是this值,而不是原生JS的那种的undefined.
- 感觉好强大,但是我并不是很想用,主要是强迫症,,代码看起来总是感觉少了点什么。。。
JQuery ajax 中缓存怎样控制?
jquery ajax 缓存的控制,没记错应该是cache,关于缓存这里一时半会也说不清楚。过几天我整理ajax的时候专门说下浏览器缓存的事.一般jquery设置是否缓存为:1
2
3$.ajax({
cache:true//true为由缓存,false为无缓存。
})
Jquery中data
的作用.
这里data
作用只要是存放一些变量。懒加载就是利用貌似就用到过这个
这次真的是jquery的一些常用方法
给元素 $node
添加 class active
,给元素 $noed
删除 class active
1 | $node.removeClass("active")//删除一个元素。 |
展示元素$node
, 隐藏元素$node
这里展示有两种,一种是直接消失(盗贼6费的那个职业卡),一种就是单隐单现的那种消失。两种都举个例子1
2
3
4
5$node.hide()//这个是直接消失..利用的也就是display:none;
$node.show()//这个是出现,医用的是display:block
$node.fadeOut(1000)//这个是淡隐,我感觉是利用的opacity
$node.fadeInt(1000)//这个是淡现。
获取元素$node 的 属性: id、src、title, 修改以上属性
好了不多说,我们直接代码,关于Jquery读取属性有两个方法:
- $node.prop 主要是偏向于于元素的固有属性,ID,src,title之类的
- $node.attr 只要是偏向于于认为给元素添加的一个属性。。但是要操作固有属性也是可以的。
1
2
3
4
5
6
7
8<body>
<a href="http://liruihaod.github.io" id="box" title="测试下">aaa</a>
</body>
<script>
$("#box").attr("id","ceshi")
$("#box").prop("title","Z-one")
$("#box").attr("data-src","测试下")
</script>
关于添加和插入元素
其实这个也和元素JS类似,而且jquer创建元素直接$(code),简直是张手就来.那我就不废话啦.直接上代码1
2
3
4
5
6
7
8
9<body>
<div id="wrap"></div>
</body>
<script>
//把一个新建元素添加到目标元素末尾
$("<div>Z-one</div>").appendTo("#wrap")
//在目标元素开头添加一个新元素.
$("#wrap").prepend($("<div>现代魔法</div>"))
</script>
关于jquery里面的删除
关于jqeury里面删除有两个方法,分别是:
$node.remove();
$node.empty();
两者的区别也很好理解,从单词就能看出来,remove是移动,包括选中元素和其子集,empty的意思就是空,很明显就只包括被选中元素的子集,被选中元素并不会被删除。
如何获取$node的宽度,高度.
其实这里获取高度,有几种。具体还是看代码吧1
2
3
4
5
6$node.height()//获取元素的内容高度
$node.innerHeight()//内容高度加padding
$node.outerHeight()//内容高度加padding+border
$node.outerHeight(true)//内容+padding+border+margin
获取宽度和上面的类似
如何获取获取窗口滚动条垂直滚动距离
额外提一点.滚动事件是scroll
1
2
3
4
5$(window).scrollTop()//窗口滚动条的垂直距离
$(window).scrollLeft()//窗口滚动条的水平距离
$node.offset()//这个是获取元素的X,Y的距离
$node.offset().top//这个是获取垂直距离
$node.offset().left//这个是获取水平距离
如何修改$node的样式
这里需要用到jquery的一个css方法.
看个例子1
2
3
4$("#ct").css({
"width":10,
"background":"green"
})
具体差不多就是这样的。这里面px可写可不写
jquery如何遍历
jquery遍历主要是用药each方法,说到了each,也说下jquery的事件代理。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22<body>
<div id="ct">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<div>点我试试???</div>
</div>
</body>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.js"></script>
<script>
//事件代理
$("#ct").on("click","li",function(){
console.log($(this).text())
})
//遍历,分别给ul的每一个子元素添加一个类。
$("#ct ul").each(function(){
$(this).addClass('active')
})
</script>
如何在jquery中查找元素?
这里需要只用$node.find()方法1
2
3
4
5
6$node.find("#ct")//在目标node中寻找id为#ct的元素。
$node.children()//这个是获取元素的子元素.
$node.children().eq(1)//这个是获取具体的元素.
$node.first()//这个是直接获取第一个元素。
$node.parent()//这个是获取这个元素的父元素。
$node.parents()//获取这个元素的前辈元素。
如何获取选取元素的个数?
这里有两个方法:
$node.size()
$node.length
看了下jquery的源码发现1
2
3size: function() {
return this.length;
}
感觉在jquery中使用size()和length没有什么区别。如何要说区别可能就是:
size()值只对于jqeury,而length 是dom和javascript的一个属性.length在原生JS中也可以使用。
另外size多了一个函数的调用,效率可能会稍微低一点点。
另外用$node.index()来判断这个元素在排第几位
另外贴下今天写一简单代码。也是用到了一些jqeury的方法
一个很简单的把小写转换为大写
1 |
|