前端笔记之jQuery(下)事件&节点操作&净位置&拖拽&页面卷动值&遍历JSON
一、监听事件大全
1.1 JavaScript事件
onblur 元素失去焦点
onchange 用户改变域的内容
onclick 鼠标点击某个对象
ondblclick 鼠标双击某个对象
onfocus 元素获得焦点
onkeydown 某个键盘的键被按下
onkeypress 某个键盘的键被按下或按住
onkeyup 某个键盘的键被松开
onload 某个页面或图像被完成加载
onmousedown 某个鼠标按键被按下
onmousemove 鼠标被移动
onmouseout 鼠标从某元素移开
onmouseover 鼠标被移到某元素之上
onmouseup 某个鼠标按键被松开
onreset 重置按钮被点击
onresize 窗口或框架被调整尺寸
onselect 文本被选定
onsubmit 提交按钮被点击
onunload 用户退出页面
onscroll 元素滚动时执行
JavaScript事件使用示例:
oDiv.onclick = function(){
}
1.2 jQuery事件
blur() 触发、或将函数绑定到指定元素的 blur 事件
change() 触发、或将函数绑定到指定元素的 change 事件
click() 触发、或将函数绑定到指定元素的 click 事件
dblclick() 触发、或将函数绑定到指定元素的 double click 事件
error() 触发、或将函数绑定到指定元素的 error 事件
focus() 触发、或将函数绑定到指定元素的 focus 事件
keydown() 触发、或将函数绑定到指定元素的 key down 事件
keypress() 触发、或将函数绑定到指定元素的 key press 事件
keyup() 触发、或将函数绑定到指定元素的 key up 事件
load() 触发、或将函数绑定到指定元素的 load 事件
mousedown() 触发、或将函数绑定到指定元素的 mouse down 事件
mouseenter() 触发、或将函数绑定到指定元素的 mouse enter 事件
mouseleave() 触发、或将函数绑定到指定元素的 mouse leave 事件
mousemove() 触发、或将函数绑定到指定元素的 mouse move 事件
mouseout() 触发、或将函数绑定到指定元素的 mouse out 事件
mouseover() 触发、或将函数绑定到指定元素的 mouse over 事件
mouseup() 触发、或将函数绑定到指定元素的 mouse up 事件
ready() 文档就绪事件(当 HTML 文档就绪可用时)
resize() 触发、或将函数绑定到指定元素的 resize 事件
scroll() 触发、或将函数绑定到指定元素的 scroll 事件
select() 触发、或将函数绑定到指定元素的 select 事件
submit() 触发、或将函数绑定到指定元素的 submit 事件
toggle() 绑定两个或多个事件处理器函数,当发生轮流的 click 事件时执行。
unload() 触发、或将函数绑定到指定元素的 unload 事件
jQuery事件使用示例:
$(‘div’).click(function(){
});
1.3 on()事件方法
定义和用法
on() 方法在被选元素及子元素上添加一个或多个事件处理程序。
自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。该方法给 API 带来很多便利,我们推荐使用该方法,它简化了 jQuery 代码库。
注意:使用 on() 方法添加的事件处理程序适用于当前及未来的元素(比如由脚本创建的新元素)。
提示:如需移除事件处理程序,请使用 off() 方法。
提示:如需添加只运行一次的事件然后移除,请使用 one() 方法。
语法:
$(selector).on(event,childSelector,data,function{
});

添加多个事件处理函数:
$('p').on('click mouseenter mouseleave',function(){
});
off()方法移除事件:
$('p').on('click mouseenter mouseleave',function(){
$(this).off('mouseleave click'); //移除mouseleave和click事件
});
使用map参数添加多个事件处理函数:
$('p').on({
click:function(){ $(this).css('background','red'); },
mouseenter:function(){ $(this).css('background','green');},
mouseleave:function(){ $(this).css('background','blue'); }
});
向未来元素添加事件(通过JS节点方法添加的新元素默认没有事件,所以要通过以下方法绑定事件,普通事件方法绑定不上)
$('div').on('click','p',function(){
alert(1);
})
二、jQuery设置和获取内容方法
3个使用的DOM操作的方法
|
text() 设置或返回所选的文本内容 html() 设置或返回所选的标签内容(包括HTML标签) val() 设置返回表单的value值 |
三、jQuery尺寸
jQuery提供多个处理尺寸的重要方法:
以下方法返回的值都是number类型
width() 方法设置或返回元素的宽度(不包括内边距、边框或外边距)。
height() 方法设置或返回元素的高度(不包括内边距、边框或外边距)。
innerWidth() 方法返回元素的宽度(包括内边距)。
innerHeight() 方法返回元素的高度(包括内边距)。
outerWidth() 方法返回元素的宽度(包括内边距和边框)。
outerHeight() 方法返回元素的高度(包括内边距和边框)。
outerWidth(true) 方法返回元素的宽度(包括内边距、边框、外边距)。
outerHeight(true) 方法返回元素的高度(包括内边距、边框、外边距)。
还可以获取HTML文档和浏览器窗口的宽高:
$(window).width() //获取当前浏览器窗口的宽度
$(window).height() //获取当前浏览器窗口的高度
$(document).width() //获取HTML文档(body)的宽度
$(document).height() //获取HTML文档(body)的高度
四、jQuery节点操作
4.1添加节点
【添加内部子节点方法】:内部节点就是儿子节点
append() 在被选元素内部的结尾插入内容
appendTo() 将指定内容插入到被选标签内部的结尾
prepend() 在被选元素内部的开头插入内容
prependTo() 将指定内容插入到被选标签内部的开头
//添加在结尾的
$('ul').append('<li>苹果</li>'); //在ul标签内部的结尾插入li内容
$('ul').append(function(){return '<li>苹果-函数的</li>'}); //功能同上
$('<li>苹果222</li>').appendTo('ul'); //将指定li内容添加到ul标签内部的结尾 //添加在开头的
$('ul').prepend('<li>苹果</li>'); //在ul标签内部的开头插入li内容
$('ul').prepend(function(){return '<li>苹果-函数的</li>'}); //功能同上
$('<li>苹果222</li>').prependTo('ul'); //将指定li内容添加到ul标签内部的开头
【添加同级节点方法】:同级就是兄弟关系
after() 在被选元素同级的后面插入内容
insertAfter() 将指定内容添加到被选标签同级的后面
before() 在被选元素同级的前面插入内容
insertBefore() 将指定内容添加到被选标签同级的前面
注意:以上方法作用相同。差异在于语法:内容和选择器的位置。
添加在同级的后面
$('ul').after('<p>以上水果都好吃</p>'); //在ul标签同级的后面插入p标签内容
$('ul').after(function(){return '<p>以上水果都好吃</p>'}); //功能同上
$('<p>以上水果都好吃</p>').insertAfter('ul'); //将指定p标签内容添加到ul标签同级的后面 添加在同级的开头
$('ul').before('<p>以下水果都不好吃</p>'); //在ul标签同级的开头插入p标签内容
$('ul').before(function(){return '<p>以下水果都不好吃</p>'}); //功能同上
$('<p>以下水果都不好吃</p>').insertBefore('ul'); //将指定p标签内容添加到ul标签同级的开头
4.2删除节点
|
remove() 删除被选元素(及其子元素) empty() 从被选元素中删除子元素 |
$('ul li').eq(1).empty(); //删除li的内容
var $li = $('ul li').eq(2).remove(); //删除整个li(包括子节点)
$('ul').append($li); //将删除的li添加在ul内部的后面
4.3克隆节点
|
clone(true) 方法生成被选元素的副本,包含子节点、文本和属性。 |
参数:可选。布尔值。规定是否复制元素的所有事件处理。默认false。
$('button').click(function(){
var $p = $('p').clone(true); //克隆p标签,true表示把子元素和事件也一起克隆
$('ul').after($p); //将克隆的p标签插入到ul后面
});
4.4替换节点
|
replaceWith() 将指定的内容替换被选元素 replaceAll() $(selector).replaceWith(content) $(content).replaceAll(selector) |
注意:replaceWith() 能够使用函数进行替换,replaceAll则不能。
$('p').replaceWith('<p>你好,请问下面水果你喜欢吗?</p>');
$('p').replaceWith(function(){return '<p>你好,请问下面水果你喜欢吗?</p>'});
$('<p>你好,请问下面水果你喜欢吗?</p>').replaceAll('p');
4.5包裹节点
|
wrap() 把匹配的元素用指定的内容或元素包裹起来。 wrapAll() 把所有匹配的元素用指定的内容或元素包裹起来。 wrapinner() 将每一个匹配的元素的子内容用指定的内容或元素包裹起来。 |
|
$('button').click(function(){ $('span').wrap('<div></div>'); //用div标签分别包裹每个span标签 $('span').wrapAll('<div></div>'); //用div标签一起包裹所有span标签 $('span').wrapInner('<b></b>'); //在span标签内部用b标签包裹内容 }); |
五、jQuery净位置
|
$('.xiaoming').offset().top $('.xiaoming').offset().top |
六、jQuery拖拽
需要使用jQuery插件,有个jQuery官方插件,叫做jQueryUI,负责实现元素的被拖拽、被拖放、改变尺寸、可圈选、可排序。
所谓的插件,就是增强jQuery功能,给jQuery添加一些必须的功能,先引用jQuery,然后引用插件。
- Draggable 拖拽
- Droppable 拖放
- Resizable 改变尺寸
- Selectable 可选择
- Sortable 可排序
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="js/jquery-ui.min.js"></script>
<script type="text/javascript">
$('img').draggable();
</script>
用JSON来配置拖拽:
$('img').draggable({
//限制元素的移动区域
'containment':'.box',
//限制轴方法
//'axis':'y',
//限制咯噔
'grid':[50,100]
});
如果在拖拽的时候,要使用坐标,此时要添加drag属性,值是一个函数,这个函数有两个参数,第一个参数:event没用,第二个参数是ui参数,有一个属性ui.position,这个属性又有两个值left、top值:
$('img').draggable({
//限制元素的移动区域
'containment':'.box',
//限制轴方法
//'axis':'y',
//限制咯噔
//'grid':[50,100],
'drag':function(event,ui){
var x = ui.position.left;
var y = ui.position.top;
$('h1').html('当前位置:' + x +'-' + y);
}
});
七、jQuery鼠标滚轮事件
jQuery天生不能监听滚动事件,需要用插件,jQuery.mousewheel.js
下载地址:http://plugins.jquery.com/mousewheel/
下载完毕后,就可以用mousewheel()事件来监听滚轮了。
$('.news').mousewheel(function(event,direction){
//direction 鼠标滚轮下滚 -1
//direction 鼠标滚轮上滚 1
console.log(direction);
});
八、页面卷动值
jQuery中屏蔽了一切浏览器兼容性问题,并且把所有属性和方法都换成了window对象的属性和方法,不用document和body了。
|
$(window).scrollTop(); //获取页面卷动的值 $(window).scroll(function(){}); //页面卷动事件 |
|
$(window).scroll(function(){ //滚动条滚动执行的事件 console.log($(window).scrollTop()); //页面滚动了多少 }); |
这个是固定语法,是html和body元素进行动画,不是window对象,改变的是固定属性'scrollTop属性
|
$('button').click(function(){ $('html,body').animate({'scrollTop':3000},1000,function(){ console.log($(window).scrollTop()); //获取页面滚动了多少 }); }); |
原生JS中,如果想让页面卷动:
document.getElementById('btn').onclick = function(){
document.documentElement.scrollTop = document.body.scrollTop = 3000;
}
九、jQuery遍历JSON方法
$.each(city,function(key,value){
console.log(key,value)
});
$.each(JSON对象,function(key,value){
console.log(key,value)
});
key就是JSON的属性名,value是JSON的属性值
前端笔记之jQuery(下)事件&节点操作&净位置&拖拽&页面卷动值&遍历JSON的更多相关文章
- 04-老马jQuery教程-DOM节点操作及位置和大小
1. jQuery创建DOM标签 1.1 DOM动态创建标签的方法 DOM时代我们通过document的createElement方法动态创建标签.创建标签后,动态的给他添加属性.例如代码: // 动 ...
- 第一百六十七节,jQuery,DOM 节点操作,DOM 节点模型操作
jQuery,DOM 节点操作,DOM 节点模型操作 学习要点: 1.创建节点 2.插入节点 3.包裹节点 4.节点操作 DOM 中有一个非常重要的功能,就是节点模型,也就是 DOM 中的“M”.页面 ...
- jQuery下拉框操作系列$("option:selected",this) &&(锋利的jQuery)
jQuery下拉框操作系列$("option:selected",this) &&(锋利的jQuery) <!DOCTYPE html> <ht ...
- 前端笔记之JavaScript(十一)event&BOM&鼠标/盒子位置&拖拽/滚轮
一.事件对象event 1.1 preventdefault()和returnValue阻止默认事件 通知浏览器不要执行与事件关联的默认动作. preventdefault() 支持Chrome等高 ...
- jQuery UI =>jquery-ui.js中sortable方法拖拽对象位置偏移问题
今天要处理sortable方法处理的对象,拖拽的时候,位置偏移的问题. 按理应该是鼠标在哪,对象就跟着在哪的 百度了一下问题,http://blog.csdn.net/samed/article/de ...
- jquery.dad.js实现table的垂直拖拽(并取到当前拖拽对象)
http://sc.chinaz.com/jiaoben/161202572210.htm 1.首先官网实例,实现的都是div为容器的元素拖拽,示例如下: 2.最近的项目,要实现tbody的每一行tr ...
- 前端笔记之jQuery(上)加载函数的区别&对象&操作HTML/CSS&动画&选择器
一.jQuery简介 1.0 JavaScript编程比较恶心的地方 恶心1:选择元素麻烦,全线兼容的方法只有getElementById()和getElementsByTagName()两个.其他的 ...
- jquery总结04-DOM节点操作
一般js操作节点 ①创建节点(元素文本)document.createElement innerHTML ②添加属性 setAttribute ③加入文档 appendChild 操作繁琐还有兼容性 ...
- 前端学习之jquery/下
前端学习之jquery 一 属性操作 html(): console.log($("div").html()); $(".test").html("& ...
随机推荐
- bzoj1124_枪战_基环树
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1124 https://www.luogu.org/problemnew/show/P34 ...
- 2019-3-26WinForm窗体间如何传值的几种方法
窗体间传递数据,无论是父窗体操作子窗体,还是子窗体操作符窗体,有以下几种方式: 公共静态变量: 使用共有属性: 使用委托与事件: 通过构造函数把主窗体传递到从窗体中: 一.通过静态变量 特点:传值是双 ...
- LDAP & Implementation
LDAP & Implementation 一.什么是LDAP? (一)在介绍什么是LDAP之前,我们先来复习一个东西:“什么是目录服务?” 1. 目录服务是一个特殊的数据库,用来保存描述性的 ...
- 一文教你看懂大数据的技术生态圈:Hadoop,hive,spark
转自:https://www.cnblogs.com/reed/p/7730360.html 大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞 ...
- CommonsChunkPlugin
CommonsChunk 插件的作用就是提取代码中的公共代码,然后将公共模块打包到一个独立的文件中,以便在其它的入口和模块中使用,原理就是把多个入口共同的依赖都给定义成一个新入口 多种打包情况: 单一 ...
- [shell] if语句用法
bash中如何实现条件判断?条件测试类型: 整数测试 字符测试 文件测试 一.条件测试的表达式: [ expression ] 括号两端必须要有空格 [[ expres ...
- 关于实体类getset方法首字母小写问题
实体类:private Date cDateTime;private String cNickname; public Date getcDateTime() { return cDateTime;} ...
- 解决用友U8删除用户时提示“用户已启用”不能删除的问题
USE UFSystem go DECLARE @cUser_Id NVARCHAR(20) SET @cUser_Id='用户的登录名' DELETE l FROM dbo.UA_TaskLog l ...
- Unity进阶----AssetBundle_03(2018/11/07)
1. 为啥有AB包? 因为资源需要更新, 避免更新一次打包一次 动态修改. 2. AB包注意啥? 依赖关系 找依赖关系应该找到对应的平台!!! 3. 打包策略是分场景打包 若文件被文件夹包含打包出来的 ...
- [编译] 6、开源两个简单且有用的安卓APP命令行开发工具和nRF51822命令行开发工具
星期四, 27. 九月 2018 12:00上午 - BEAUTIFULZZZZ 一.前言 前几天给大家介绍了如何手动搭建安卓APP命令行开发环境和nRF51822命令行开发环境,中秋这几天我把上面篇 ...