jQuery(二)jQuery属性操作
一、jQuery属性操作
1、获取和设置元素本身自带的属性
- 获取属性语法: prop(‘属性’)
- 设置属性语法: prop(‘属性’,‘属性值’)
2、 获取和设置元素的自定义属性
- 获取自定义属性语法:attr()
- 设置自定义属性语法: attr(‘属性’,‘属性值’)
3、获取元素上 data-* 开头的自定义属性
- 语法:data();
- 设置自定义属性语法: data(‘属性’,‘属性值’)
- 注意:
(1)修改的数据都保存在内存中
(2)不能修改已经存在的自定义属性
(3)底层使用闭包 保存在函数作用域中
// 1.1 操作表单元素上的 type 类型和 checked 选中状态
$('input').eq(0).prop('type', 'password');
$('input').eq(1).change(function() {
console.log($(this).prop('checked'));
});
// 2. 获取和设置元素的自定义属性: attr()
console.log($('div').attr('foo', 'world'));
// 3. 获取元素上 data-* 开头的自定义属性: data()
console.log($('div').data('index')); //参数可以省略data-,获取的数据是数据类型的
// 4. 设置元素储存在内存中的数据: data(),不能修改已经存在的自定义属性
$('div').data('index', '112'); //修改的数据都保存在内存中
console.log($('div').data('index'));二、jQuery 文本属性值
1、获取和设置元素中的带有 html 标签的内容
- 语法:html()
- 直接覆盖原内容
2、获取和设置元素中的纯文本内容
- 语法: text()
3、获取和设置表单元素的值
- 语法: val()
console.log($('div').html());
$('div').html('<h1>123</h1>');
console.log($('div').text());
$('h1').text('hello');
console.log($('input', 'value'));
$('input').val('world')三、jQuery元素操作
1、方法:jq对象.each(callback)
- 第一个参数表示索引号,第二个数值表示数据
$(function() {
var arr = ['red', 'gold', 'skyblue', 'greenyellow']
// jq对象.each(callback) 方法快速遍历一组 jq 元素
$('div').each(function(index, item) { //第一个参数表示索引号,第二个数值表示数据
console.log(index, '==>', item);
// $(item).hide();//使用jq方法,必须将item包起来
//给每个div设置不同的背景颜色
$(item).css('background', arr[index]);
})
})2、 $.each(obj, callback) 方法
- 此方法可以用于遍历任何对象,不仅仅是元素集合,数组、对象、伪数组都可以
- 一般用来处理数据, 遍历迭代对象
$.each($('div'), function(index, item) {
console.log($(item).text());
});
var arr = [1, 4, 5, 6];
$.each(arr, function(index, item) {
console.log(item);
})
var obj = {
name: '567',
height: 123,
};
$.each(obj, function(index, item) {
console.log(index, '==>', item);
});- 使用 $.each() 方法求出所有 li 中的数值和
var sum = 0;
$.each($('div'), function(index, item) {
sum += parseInt($(item).text())
})
console.log(sum);3、创建、添加、删除
3.1、创建元素
- 创建任意的 html 片段
var div = $(`<div style='background:skyblue;height:20px'>
<span>hello</span>
</div>`);
console.log(div[0]);
var li = $('<li>hello world</li>')3.2、添加到页面
- 追加到所有子元素的末尾: append()
// $('ul').append(li);
$('ul').append('<li>hello world</li>');- 添加到所有子元素的开头: prepend()
$('ul').prepend(li)- 添加到某个元素的前面: before()
$('li').eq(2).before(li);- 添加到某个元素的后面: after()
$('li').eq(1).after(li);3.3、删除元素
- 删除当前元素(包括自己) remove()
$('div').remove();- 删除当前元素内部的所有内容(不包括自己) empty()
$('div').empty();四、jQuery 尺寸、位置操作
1、 jQuery 获取元素尺寸操作
- 获取元素本身宽高: width() ==> content
console.log($('.box').width());
console.log($('.box').height());- 获取元素本身包括内边距的宽高: innerWidth() ==> content + padding
console.log($('.box').innerWidth());- 获取元素除了外边距之外的宽高: outerWidth() ==> content + padding + border
console.log($('.box').outerWidth());- (了解)获取元素包括外边距的宽高: outerWidth(true) ==> content + padding + border + margin
console.log($('.box').outerWidth(true));- 设置元素的宽高: 直接在方法的括号中传递第二个参数
$('.box').width(300);
$('.box').height(300);2、 jQuery 位置操作
- 获取元素距离**页面(文档)**左侧和顶部的距离: offset()
- 注意:这里的top和left是属性,不是方法,不能加小括号
console.log($('.son').offset().left);
console.log($('.son').offset().top);- 设置元素在页面中的位置: offset()
$('.son').offset({
left: 100,
top: 100
})- 获取元素相对定位父级元素的左侧和顶部的距离: position()
- 注意:position 方法不能设置元素的偏移位置
console.log($('.son').position().left);
console.log($('.son').position().top);- 可以用css方法设置样式
$('.son').css({
left: 80,
top: 80
})3、jQuery 获取被卷去的头部操作
// 1. 获取元素中的内容被卷去的高度
$('.box').scroll(function() {
console.log($(this).scrollTop());
});
// 2. 获取整个页面内容被卷去的高度
$(window).scroll(function() {
console.log($(this).scrollTop());
});4、设置元素滚动到指定位置
- 无动画效果:scrollTop(target)
- 带动画效果: animate()
- 注意: 给整个页面做动画的元素不能是 window 对象, 固定使用 $(‘html, body’)
$(window).scroll(function() {
// 当页面滚动超过box盒子距离页面顶部距离时,显示返回顶部按钮
if ($(this).scrollTop() > $('.box').offset().top) {
$('.goTop').show()
} else { //否则隐藏返回按钮
$('.goTop').hide()
}
});
// 为返回按钮绑定点击事件
$('.goTop').click(function() {
$('body,html').animate({
scrollTop: 0
})
})
















