属性和属性节点有什么区别?
任何对象都有属性,但是只有DOM对象才有属性节点
原生js操作属性
//获取属性节点的值
console.log(DOM元素.setAttribute('属性名称'))
//修改属性节点的值
DOM元素.setAttribute('属性名称','值')
jQuery操作属性的方法
1、attr()
//作用:获取或者设置属性节点的值
//如果传递一个参数,代表获取属性节点的值
//如果传递两个参数,代表设置属性节点的值
// 注意:
// 如果是获取:无论找到多少个元素,都只会返回第一个元素指定的属性节点的值
// 如果是设置:找到多少个元素,就会设置多少个元素
// 如果是设置:如果设置的属性节点不存在,那么系统会自动新增
$('span').attr('class');
$('span').attr('class','box');
2、removeAttr()
//作用:删除属性节点,如果要删除多个,则在后面添加空格
//注意:会删除所有找到的元素指定的属性节点
$('span').removeAttr('class');
3、prop()
//特点和attr一致
4、removeProp()
//特点与removeAttr一致
注意:prop方法不仅能够操作属性,还能够操作属性节点
官方推荐:在操作属性节点时,具有 true 和 false 两个属性的属性节点,如checked,selected或者disabled 使用prop(),其他的情况使用attr()
1、addClass()
//作用:添加一个类
//如果要添加多个,多个类名之间用空格隔开
$('div').addClass('class1')
2、removeClass()
//作用:删除一个类
//如果要删除多个,多个类名之间用空格隔开
$('div').removeClass('class1')
3、toggleClass()
//作用:切换类
//有就删除,没有就添加
$('div').toggleClass('class1')
1、html()
//获取代码片段
console.log($('div').html());
//设置代码片段
$('div').html('我是段落
')
2、text()
//获取文本
console.log($('div').text())
//设置文本
$('div').text('我是设置的文本')
3、val()
//作用:给input设置或者获取内容
//获取
console.log($('input').val())
//设置
$('input').val('请输入内容')
获取css样式
console.log($('div').css('width'))
逐个设置
$('div').css('width':'100px');
链式设置
$('div').css('width':'100px').css('height':'100px');
批量设置
$('div').css({
width:'100px',
height:'100px',
background:'red'
})
1、width()
//获取元素的宽度
console.log($('div').width());
//设置元素的宽度
$('div').width('500px')
2、height()
//获取元素的高度
console.log($('div').height());
//设置元素的宽高度
$('div').height('500px')
3、offset()
//获取元素距离窗口的偏移位
console.log($('div').offset().left);
//设置元素的偏移位
$('div').offset({
left:'10'
})
4、position()
//获取元素距离定位元素的偏移位
console.log($('div').position().left);
//注意:该方法只能获取,不能设置
5、scrollTop()
//获取元素滚动的偏移位
console.log($('div').scrollTop());
//获取整个网页的滚动偏移位(保证浏览器兼容,需要用以下写法)
console.log($('body').scrollTop() + $('html').scrollTop());
//设置元素滚动的偏移位
$('div').scrollTop(300);
//设置网页的滚动偏移位(保证浏览器兼容)
$('html,body').scrollTop(300)
添加节点
1、append()
//将元素添加到指定元素内部的最后
var $li = $('新增的li ')
$('ul').append($li)
2、append()
//将元素添加到指定元素内部的最前面
var $li = $('新增的li ')
$('ul').prepend($li)
3、after()
//将元素添加到指定元素的后面
var $li = $('新增的li ')
$('ul').after($li)
4、before()
//将元素添加到指定元素的前面
var $li = $('新增的li ')
$('ul').before($li)
删除节点
1、remove()
//删除指定元素
//也可以将要删除元素的类名以字符串的形式传入即可
$('div').remove()
2、empty()
//删除指定元素的内容和子元素,指定元素自身不会被删除
$('div').empty()
替换节点
1、replaceWith()
//替换所有匹配的元素为指定元素
var $h6 = $('我是标题6
');
$('h1').replaceWith($h6)
复制节点
1、clone()
浅复制节点(只会复制元素,不会复制元素的事件)
//1、浅复制一个元素
var $li = $('li:first').clone(false)
//2、将复制的元素添加到ul中
$('ul').append($li)
深复制节点(会复制元素,也会复制元素的事件)
//1、深复制一个元素
var $li = $('li:first').clone(true)
//2、将复制的元素添加到ul中
$('ul').append($li)