在此是对实验楼的练习笔记的整理,有兴趣的小伙伴可以到实验楼这个非常棒的平台去练练~
看一段简单的代码段,回顾jQuery的使用方式
(内部的代码片段是截取了js部分,显示不同的功能)
1 | <!doctype html> |
jQuery的常用属性
表单选择器
:input
:text
:password
:radio
:checkbox
:submit
:image
:reset
:button
:file
:hidden
基本过滤选择器
:first
:last
:not(selector)
:odd 选取索引是奇数的元素
:even 选取索引是偶数
:eq(index) =
:gt(index) 大于
:lt(index) 小于
:header 选取标题元素
:animated 选取当前正在执行动画的元素
:focus 选取当前焦点的元素
内容过滤元素
:contains(text) 选取包含“text”的元素
:empty 选取不包含元素或文本的空元素
:has(selector) 选取含有选择器所匹配的元素的元素
:parent 选取含有子元素或者文本的元素
可见性过滤器
:hidden 选取不可见元素
:visible 选取可见元素
属性过滤选择器
[attr] 拥有此属性的元素
[attr=value] 选取属性值为value的元素
[attr!=value]
[attr^=value] 属性值以value开始的元素
[attr$=value] 属性值以vlaue结束的元素
[attr*=value] 属性值含有value的元素
子元素过滤器
:first-child 选取第一个子元素
:last-child 选取最后一个子元素
表单对象属性过滤器
:enabled 选取所有可用元素
:disabled
:checked 选取所有被选中元素(单选框,复选框)
:selected 选取所有被选中的选项(下拉列表)
DOM与jQuery的相互转换
DOM => jQuery 1
2var domObj = document.getElementById('demo');
var jQueryObj = $(domObj);
jQuery => DOM
1 | 1. var jQueryObj = $('#demo'); |
jQuery中的DOM操作
1. 创建节点1
2
3
4
5
6
7
8
9
10
11
12
13
14
15<script type="text/javascript">
$(document).ready(function(){
var li_obj = $('<li>yellow</li>');
$('ul').append(li_obj);
});
</script>
<body>
<ul>
<li>blue</li>
<li>white</li>
<li>red</li>
</ul>
</body>
2.插入节点
插入的方法
append() 向匹配的元素内部追加内容
appendTo() 将匹配的元素追加到指定的元素中
prepend() 向匹配的元素内部前置内容
prependTo() 将匹配的元素前置到指定的元素中
after() 将匹配的元素之后插入内容
insertAfter() 就爱那个匹配的元素插入到指定的元素后面
before() 在匹配的元素之前插入内容
insertBefore() 将匹配的元素插入到指定的元素的前面
3.删除节点
remove() 从DOM中删除所匹配的元素,可传参数,后代节点也被删除
detach() 从DOM中删除所匹配的元素,但绑定的事件,附加的数据等会保留下来
empty() 清空节点,清空元素的所有的后代元素节点
4.复制节点
复制节点可以通过clone()方法来实现,当clone()中传递了参数true,代表复制元素的同时复制其绑定的元素。1
2
3
4
5
6
7
8
9
10
11
12
13
14eg:点击li元素即可复制其本身到ul中
<script type="text/javascript">
$("ul li").on('click', function(){
$(this).clone().appendTo('ul');
});
</script>
<body>
<ul>
<li>blue</li>
<li>white</li>
<li>red</li>
</ul>
</body>
5.替换节点
repalceWith() 将匹配到的元素替换成指定的HTML或DOM元素
replaceAll() 颠倒了 replaceWith() 的操作
6.包裹节点
wrap() 将匹配的元素用其他结构化的标记包裹起来(单独包裹)
wrapAll() 将匹配的元素用一个结构化的标记包裹起来
wrapInner() 将匹配的元素的子内容用其他结构话的标记包裹起来
7.属性操作
用attr()方法获取和设置元素的属性,区别是参数的个数
eg: attr(“class”); —获取
attr(“class”, “demo”); —设置
removeAttr() 删除元素的属性
8.样式操作
addClass() 追加样式
removeClass() 移除样式
9.HTML, 文本和值
html()用来获取或设置所匹配元素中的HTML内容
text()用来获取或设置所匹配元素中的文本内容
val()用来设置和获取元素的值
10.遍历节点
children() 获取匹配元素的子元素集合
next() 获取匹配元素后面紧邻的同辈元素
prev() 获取匹配元素前面紧邻的同辈元素
siblings() 获取匹配元素前后所有的同辈元素
parent() 匹配元素的父级元素
11.CSS-DOM操作
css()获取或设置元素样式属性
hight(), width() 获取元素高,宽
事件和动画
事件
1.事件绑
bind() 对匹配元素进行特定的事件绑定
on() 对匹配元素进行一个或多个事件绑定
one() 对匹配元素进行一个只执行一次的事件处理函数绑定
事件类型:blur, focus, load, resize, scroll, unload, click, dbclick, mousedown, mouseup, mouseover, mouseout, keydown, keypress等,也可以为自定义名称。1
2
3
4
5eg:
$('ul li').bind('click', function(){
$(this).clone().appendTo('ul');
});
2.简写绑定事件1
2
3$('ul li').click(function(){
$(this).clone().appendTo('ul');
});
3.合成事件hover()
用于模拟光标悬停事件1
2
3
4
5$('ul li').hover(function(){
$(this).css({"font-size":"24px"});
}, function(){
$(this).css({"font-size":"14px"});
});
动画
1.show() 和 hide()
控制元素的显示和隐藏
2.animate()
用来实现自定义动画1
$('.title').animate({left:"500px"}, 3000);
Ajax 应用
1.load()1
2
3
4
5载入远程HTML代码或记事本中的内容插入DOM中.
$('.loadData').load("test.html", function(responseText, textStatus, XMLHttpRequest){
//返回的数据
});
2.$.get()1
2
3
4
5
6
7
8
9`使用GET方式来进行异步请求
$.get('get.py', {
//此处是示例,是获取表单中的username, password的值
username:$('#username').val(),
password:$('#password').val()
}, function(data, textStatus){
//返回的数据
});
3.$.post()1
2
3
4
5
6
7
8使用POST方式进行异步请求
$.post('post.py', {
username:$('#username').val(),
password:$('#password).val()
}, function(data,, textStatus){
//返回的数据
});
4.$.getJSON()1
2
3
4
5用于加载JSON文件
$.getJSON('test.json', function(data){
//返回的数据
});
5.$.ajax()1
2
3
4
5
6
7
8
9
10
11是jQuery最底层的Ajax实现,可以用它来替代之前所介绍的方法
eg: 替代$.post()
$.ajax({
type:"POST",
url:"post.py",
dataType:"json",
success:function(data){
//返回的数据
}
});
jQuery插件
1.自定义插件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35eg:一个设置和获取元素背景色的插件(这里只是写了关键代码段)
<style>
.one{
background:black;
height:100px;
width:200px;
}
</style>
<script>
//插件的编写
(function($){
jQuery.fn.extend({
"background": function(value){
if(value == undefined){
return this.css("background");
}else{
return this.css("background",value);
}
}
});
})(jQuery);
//插件的使用
$(document).ready(function(){
alert($('.one').background());
//设置背景色:$('.one').background('red');
});
</script>
<body>
<div class="one"></div>
</body>