jQuery动画与ajax
1.jQuery 中, $(document).ready()是什么意思?
跟$(handle)一样,都是document加载完之后执行里面的函数。使用该方法,不论该方法所在的script标签在html中位于哪个位置,都会在DOM加载完之后再执行。
2.$node.html()和$node.text()的区别?
- $node.html()是获取html结构,它包括标签和文本内容
- $node.text()只获取文本内容
3.$.extend 的作用和用法?
将两个或者多个对象合并到一个对象
jQuery.extend( [deep ], target, object1 [, objectN ] )
deep 如果为true,就是深拷贝
target 被加载的对象
object1[, object] 加载的对象
4. jQuery 的链式调用是什么?
jQuery调用操作方法之后会返回一个该方法处理过后的jQuery对象,所以他可以在一条语句上多次调用各种方法,就像一条锁链一样,所以这就是jQuery的链式调用,例:
$('div').removeClass()
.addClass()
.animate()
5.jQuery 中 data 函数的作用
在匹配的元素上存储任意数据。例:
<body>
<div>
<span></span>
</div>
</body>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
<script>
/*在div上存一个数据,该数据是一个对象*/
$('div').data('key',{
name: 'jinlong',
age: '26'
});
/*使用在div上存放的数据*/
$('span').text('我叫' + $('div').data('key').name + ',今年'+$('div').data('key').age+'');
</script>
6.写出以下功能对应的 jQuery 方法:
-
给元素 $node 添加 class active,给元素 $noed 删除 class active
$node.addClass() , $node.removeClass() -
展示元素$node, 隐藏元素$node
$node.show() , $node.hide() -
获取元素$node 的 属性: id、src、title, 修改以上属性
$node.attr('attr','value') , attr可以是标签内的任意属性,id 、src、title都可以。 -
给$node 添加自定义属性data-src
$node.attr('data-src','') -
在$ct 内部最开头添加元素$node
$ct.prepend('$node'); -
在$ct 内部最末尾添加元素$node
$ct.append('$node') -
删除$node
$ct.remove() -
把$ct里内容清空
$ct.empty(); -
在$ct 里设置 html <div class="btn"></div>
$ct.html('<div class="btn"></div>'); -
获取、设置$node 的宽度、高度(分别不包括内边距、包括内边距、包括边框、包括外边距)
$('.ct').height() 内容高度
$('.ct').innerHeight() 内容高度 + padding
$('.ct').outerHeight() 内容高度 + padding + border
$('.ct').outerHeight() 内容高度 + padding + border + margin
('.ct').width() 内容宽度
$('.ct').innerWidth() 内容宽度 + padding
$('.ct').outerWidth() 内容宽度 + padding + border
$('.ct').outerWidth(true) 内容宽度 + padding + border + margin -
获取窗口滚动条垂直滚动距离
- $('body'),scrollTop()
获取body滚动条的垂直滚动距离 - $('div'),scrollTop()
获取div滚动条的垂直滚动距离,如果div没有滚动条,则滚动条高度为0
- $('body'),scrollTop()
-
获取$node 到根节点水平、垂直偏移距离
$node.offset()
返回一个对象,对象里面包含到根节点水平、垂直偏移距离 -
修改$node 的样式,字体颜色设置红色,字体大小设置14px
<style>
div{
width: 100px;
height: 100px;
color: black;
font-size: 20px;
}
</style>
<body>
<div class="ct">123</div>
</body>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
<script>
$('div').css({
'color': 'red',
'font-size': '14px'
});
</script>
- 遍历节点,把每个节点里面的文本内容重复一遍
<body>
<div class="ct">
<span>123</span>
<span>456</span>
<span>789</span>
</div>
</body>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
<script>
$('div span').each(function () {
var a = $(this).text($(this).text() + $(this).text());
})
</script>
-
从$ct 里查找 class 为 .item的子元素
$('.ct').find('.item') -
获取$ct 里面的所有孩子
$('.ct').children() -
对于$node,向上找到 class 为'.ct'的父亲,在从该父亲找到'.panel'的孩子
$('.item').parents('.ct').find('.panel') -
获取选择元素的数量
<body>
<div class="ct">
<span>123</span>
<span class="item">456</span>
<span class="panel">789</span>
</div>
</body>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
<script>
console.log($('div span').length);
</script>
- 获取当前元素在兄弟中的排行
$ct.index()
题目7:用jQuery实现以下操作
- 当点击$btn 时,让 $btn 的背景色变为红色再变为蓝色
<style>
button{
padding: 10px 15px;
}
</style>
<body>
<button>btn变色</button>
</body>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
<script>
$('button').on('click',function () {
$(this).css({
background: 'red'
});
setTimeout(function (){
console.log(2)
$('button').css({
background: 'blue'
})
},2000)
});
</script>
- 当窗口滚动时,获取垂直滚动距离
<style>
div{
height: 2000px;
}
</style>
<body>
<div></div>
</body>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
<script>
setInterval(function () {
console.log($('body').scrollTop())
},1000)
</script>
- 当鼠标放置到$div 上,把$div 背景色改为红色,移出鼠标背景色变为白色
<style>
body{
background: green;
}
div{
width: 100px;
height: 100px;
background: blue;
}
</style>
<body>
<div></div>
</body>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
<script>
$('div').on('mouseenter',function () {
$(this).css({
background: 'red'
})
})
$('div').on('mouseleave',function () {
$(this).css({
background: 'white'
})
})
</script>
- 当鼠标激活 input 输入框时让输入框边框变为蓝色,当输入框内容改变时把输入框里的文字小写变为大写,当输入框失去焦点时去掉边框蓝色,控制台展示输入框里的文字
<style>
input{
outline-color: transparent;
border: 1px solid black;
}
</style>
<body>
<input type="text">
<div></div>
</body>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
<script>
$('input').on('focus',function () {
$(this).css({
border: '1px solid blue'
})
})
$('input').on('change',function () {
$(this).val($(this).val().toUpperCase());
})
$('input').on('blur',function () {
$(this).css({
border: '1px solid black'
})
console.log($(this).val());
})
</script>
- 当选择 select 后,获取用户选择的内容
<body>
<select name="select" id="select">
<option value="opt1">111</option>
<option value="opt2">222</option>
<option value="opt3">333</option>
</select>
</body>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
<script>
$('select').on('change',function () {
console.log($('select option:selected').text())
})
</script>
8.用 jQuery ajax 实现如下效果。`当点击加载更多会加载数据展示到页面
前端代码:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<style>
ul{
padding: 0;
}
li{
list-style: none;
border: 1px solid #ccc;
padding: 10px;
margin-top: 20px;
cursor: pointer;
}
li:hover{
background: green;
}
button{
display: block;
border-radius: 3px;
margin: 10px auto;
padding: 10px;
background: white;
color: #E27272;
border: 1px solid #E27272;
outline-color: transparent;
font-size: 16px;
cursor: pointer;
}
</style>
<body>
<ul>
<li>内容1</li>
<li>内容2</li>
</ul>
<button>加载更多</button>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
<script>
function appendHtml(news){
console.log(news);
var html = '';
$(news).each(function () {
html += '<li>'+this+'</li>';
});
$('ul').append(html);
}
$('button').on('click',function () {
var index = $('ul li').length + 1;
$.ajax({
url: '/loadMore',
type: 'get',
data: {
index: index,
length: '5'
}
}).done(function (ret) {
appendHtml(ret);
}).fail(function () {
console.log('系统异常');
}).always(function () {
console.log('发送请求');
})
})
</script>
</body>
</html>
后端代码:
router.get('/loadMore',function (req,res) {
var index = req.query.index;
var length = req.query.length;
var data = [];
for(var i=0;i<length;i++){
data.push('内容' + (parseInt(index) + i));
}
res.send(data);
});