val方法用于设置和获取表单元素的值,例如input、textarea的值
//获取值
//用于有value的元素, input, select, textarea
//没有参数就是赋值, 有参数就是取值
$('#name').val();
//设置值
$('#name').val('value');
html方法相当于innerHTML text方法相当于innerText
//设置内容
$('div').html('<span>这是一段内容</span>');
//获取内容
$('div').html()
//设置内容
$('div').text('<span>这是一段内容</span>');
//获取内容
$('div').text()
区别:html方法会识别html标签,text方法会将内容直接当成字符串,并不会识别html标签。
empty() 和 html() 方法都可以清空内容,但推荐使用empty方法清空元素里的内容
$('div').empty();//清空div的所有内容(推荐使用,会清除子元素上绑定的事件)
$('div').html('');//使用html方法来清空元素,不推荐使用,会造成内存泄漏,绑定的事件不会被清除。
设置或者获取高度
//带参数表示设置高度
$('img').height(200);
//不带参数获取高度
$('img').height();
获取网页的可视区宽高
//获取可视区宽度
$(window).width();
//获取可视区高度
$(window).height();
width是指样式中的width, 不包括border, padding, margin
innerWidth() //width + border
outerWidth() //width + border + padding
outerWidth(true) //width + border + paddiing + margin
场景: 用outerWidth(true)拿到单个元素的宽度, 用遍历加到总宽度
设置或者获取垂直滚动条的位置
//获取页面被卷曲的高度
$(window).scrollTop();
//获取页面被卷曲的宽度
$(window).scrollLeft();
出错记录:
//$(window).animate()错误
// animate:是元素动画,只能对dom!!元素!!添加动画
//animate() 方法执行 CSS 属性集的自定义动画, window没有css属性
$('html, body').animate({'scrollTop': 0}, 1000)
//$('window').scrool() 错误, 不用单引号, window就是dom对象
$(window).scrool()
offset方法获取元素距离document的位置,position方法获取的是元素距离有定位的父元素的位置。
//获取元素距离document的位置,返回值为对象:{left:100, top:100}
$(selector).offset();
//获取相对于其最近的有定位的父元素的位置。
$(selector).position();
JavaScript中已经学习过了事件,但是jQuery对JavaScript事件进行了封装,增加并扩展了事件处理机制。jQuery不仅提供了更加优雅的事件处理语法,而且极大的增强了事件的处理能力。
简单事件绑定>>bind事件绑定>>delegate事件绑定>>on事件绑定(推荐)
简单事件注册s
click(handler) 单击事件
mouseenter(handler) 鼠标进入事件
mouseleave(handler) 鼠标离开事件
缺点:不能同时注册多个事件, 也不能实现委托事件
bind方式注册事件
//第一个参数:事件类型
//第二个参数:事件处理程序
$('p').bind('click mouseenter', function(){
//事件响应方法
});
缺点:不支持动态事件绑定, 也不能实现委托事件
delegate注册委托事件
// 第一个参数:selector,要绑定事件的元素
// 第二个参数:事件类型
// 第三个参数:事件处理函数
$('.parentBox').delegate('p', 'click', function(){
//为 .parentBox下面的所有的p标签绑定事件
});
缺点:只能注册委托事件,因此注册事件需要记得方法太多了
on注册事件
jQuery1.7之后,jQuery用on统一了所有事件的处理方法。
最现代的方式,强烈建议使用。
on注册事件的语法:
$(selector).on(events[,selector][,data],handler);
// 第一个参数:events,绑定事件的名称可以是由空格分隔的多个事件(标准事件或者自定义事件)
// 第二个参数:selector, 执行事件的后代元素(可选),如果没有后代元素,那么事件将有自己执行。
// 第三个参数:data,传递给处理函数的数据,事件触发的时候通过event.data来使用(不常使用) 不常用
// 第四个参数:handler,事件处理函数
on注册简单事件
// 表示给$(selector)绑定事件,并且由自己触发,不支持动态绑定。
$(selector).on( 'click', function() {});
on注册委托事件
// 表示给$(selector)绑定代理事件,当必须是它的内部元素span才能触发这个事件,支持动态绑定
$(selector).on( 'click','span', function() {});
错误笔记:
$('.slider').on('mouseleave', function () {})
//mouseover, mouseout子元素会有事件冒泡
//必须用mouseenter, mouseleave
unbind方式(不用)
$(selector).unbind(); //解绑所有的事件
$(selector).unbind('click'); //解绑指定的事件
undelegate方式(不用)
$( selector ).undelegate(); //解绑所有的delegate事件
$( selector).undelegate( 'click' ); //解绑所有的click事件
off方式(推荐)
// 解绑匹配元素的所有事件
$(selector).off();
// 解绑匹配元素的所有click事件, 当初谁绑定的, 现在谁解绑
$(selector).off('click');
$(selector).trigger(event,eventObj,param1,param2,...)
参数 | 描述 |
---|---|
event | 必需。规定指定元素上要触发的事件。 可以是自定义事件,或者任何标准事件。 |
param1,param2,... | 可选。传递到事件处理程序的额外参数。 额外的参数对自定义事件特别有用。 |
$(selector).click(); //触发 click事件
$(selector).trigger('click'); //jQuery给的更直观的写法
//用处: 事件可能有多种触发途径, 触发的函数部分复用, 没必要再写一遍
trigger: 触发
易错点笔记:
$(".mp3 audio").get(idx).load()
$(".mp3 audio").get(idx).play()
//play() 是H5 提供的方法,jq没有进行封装(是DOM对象才能调用的方法)
// 如果只是play方法那么只能等到这一首播放完毕之后才会播放下一首
// load可以重新 加载 资源
//不松开键盘按键, 会一直触发keydown, 必须设置一个全局变量比如flag来记录按键状态, 按下flag = flase, 检测到false, 就不进入里面函数
jQuery事件对象其实就是js事件对象的一个封装,处理了兼容性。
//screenX和screenY 对应屏幕最左上角的值
//clientX和clientY 距离页面左上角的位置(忽视滚动条)
//pageX和pageY 距离页面最顶部的左上角的位置(会计算滚动条的距离)
//event.keyCode 按下的键盘代码
//event.data 存储绑定事件时传递的附加数据
//event.stopPropagation() 阻止事件冒泡行为
//event.preventDefault() 阻止浏览器默认行为
//return false 既能阻止事件冒泡,又能阻止浏览器默认行为。
$(document).on('keydown', function(e){
console.log(e.keycode) //获取按键的asci码
})