博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jQuery的位置信息和事件
阅读量:5068 次
发布时间:2019-06-12

本文共 10180 字,大约阅读时间需要 33 分钟。

一.位置信息

 1.宽度和高度

  获取宽度:   .width()

  为匹配的元素集合中获取第一个元素的当前计算宽度值。这个方法不接受任何参数。.css(width) 和 .width()之间的区别是后者返回一个没有单位的数值(例如,400),前者是返回带有完整单位的字符串(例如,400px)。当一个元素的宽度需要数学计算的时候推荐使用.width() 方法 。

  设置宽度:   .width(value)

  给每个匹配的元素设置CSS宽度。

  获取高度:   .height()

  获取匹配元素集合中的第一个元素的当前计算高度值。

  这个方法不接受任何参数。

  设置高度:  .height(value)

  设置每一个匹配元素的高度值。

2.innerHeight() 和 innerWidth

  获取内部宽:    .innerWidth()

  为匹配的元素集合中获取第一个元素的当前计算宽度值,包括padding,但是不包括border。

  这个方法不适用于window 和 document对象,对于这些对象可以使用代替。

  设置内部宽:   .innerWidth(value);

  为匹配集合中的每个元素设置CSS内部宽度。如果这个“value”参数提供一个数字,jQuery会自动加上像素单位(px)

  获取内部高: .innerHeight()

  为匹配的元素集合中获取第一个元素的当前计算高度值,包括padding,但是不包括border。

  这个方法不适用于window 和 document对象,对于这些对象可以使用代替。

  设置内部高:   .innerHeight(value);

  为匹配集合中的每个元素设置CSS内部高度。如果这个“value”参数提供一个数字,jQuery会自动加上像素单位(px)

3.outerWidth 和 outerHeight()

  获取外部宽:     .outerWidth( [includeMargin] )

  获取匹配元素集合中第一个元素的当前计算外部宽度(包括padding,border和可选的margin)

  includeMargin (默认: false)     类型: Boolean  一个布尔值,表明是否在计算时包含元素的margin值。

  这个方法不适用于window 和 document对象,可以使用代替

  设置外部宽:    outerWidth( value ) 

  为匹配集合中的每个元素设置CSS外部宽度。

  获取外部高:   .outerHeight( [includeMargin ] )

  获取匹配元素集合中第一个元素的当前计算外部高度(包括padding,border和可选的margin)

  includeMargin (默认: false)    类型: Boolean

  这个方法不适用于window 和 document对象,可以使用代替

  设置外部高:    .outerHeight( value )

   为匹配集合中的每个元素设置CSS外部高度。

4.偏移

  获取:    .offset()

返回值: 。.offset()返回一个包含top 和 left属性的对象 。

在匹配的元素集合中,获取的第一个元素的当前坐标,坐标相对于文档。

  设置:   .offset ( coordinates )

 设置匹配的元素集合中每一个元素的坐标, 坐标相对于文档。

  coordinates         类型:
 
一个包含top 和 left属性的对象,用整数指明元素的新顶部和左边坐标。
  
$("p").offset({ top: 10, left: 30 });

5.元素坐标

  .position()

返回值:{top,left}

描述获取匹配元素中第一个元素的当前坐标,相对于offset parent的坐标。(offset parent指离该元素最近的而且被定位过的祖先元素 )

当把一个新元素放在同一个容器里面另一个元素附近时,用.position()更好用。

 

    
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
  • 11
位置信息

 

6.滚动距离 

  水平方向

获取:

.scrollLeft()

描述:获取匹配的元素集合中第一个元素的当前水平滚动条的位置(页面卷走的宽度)

设置:

.scrollLeft( value )

描述:设置每个匹配元素的水平方向滚动条位置。

  垂直方向

获取:

.scrollTop()

描述:获取匹配的元素集合中第一个元素的当前迟滞滚动条的位置(页面卷走的高度)

设置:

.scrollLeft( value )

描述:设置每个匹配元素的垂直方向滚动条位置。

    
Document
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
回到顶部
回到顶部

二.js的事件流的概念

  HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件、页面的滚动事件onscroll等等,可以向文档或者文档中的元素添加事件侦听器来预订事件

  事件流的概念

1、DOM事件流

“DOM2级事件”规定的事件流包括三个阶段:

① 事件捕获阶段;

② 处于目标阶段;

③ 事件冒泡阶段

    

jQ的常用事件

  1.事件冒泡

阻止事件冒泡  

  
e.stopPropagation()方法
  注意:   1.return false 在jQuery中是即阻止事件冒泡又阻止默认行为
         2.jQuery不支持事件捕获

 阻止默认行为

  e.preventDefault()方法
    
    
Document
换肤
换肤

  1.鼠标事件  

click

鼠标单击触发事件,参数可选(data,fn)
 

dblclick

鼠标双击触发事件,参数可选(data,fn)  

mousedown()/up()

鼠标按下/弹起触发事件
 

mousemove()

鼠标移动事件
 

mouseover()/out()

鼠标移入/移出触发事件 
鼠标指针穿过/离开被选元素或者当前元素的子元素,会触发事件

mouseenter()/leave()

鼠标进入/离开触发事件
鼠标指针只在穿过/离开被选元素触发事件

focus()/blur()

鼠标聚焦/失去焦点触发事件(不支持冒泡)
 

keydown()/up()

键盘按键按下/弹起触发
 

 

    
Document
事件合成
    
Document
单双击事件
    
Document
聚焦和失焦

  2.表单事件

 change()   表单元素发生改变时触发事件  

  此事件仅限于<input>元素,<textarea>框和<select>元素
  对于选择框,复选框和单选按钮,当用户使用鼠标进行选择时,会立即触发事件,但对于其他元素类型,事件将延迟到元素失去焦点
 select()  文本元素发生改变时触发事件
 
 
  
此事件仅限于input type类型为text和textarea表单元素
 
  
此时可以调用 jquery的submit方法通过e.preventDefault()来阻止默认事件,这样我们就能动态的跟服务端来发送数据了。
    
Document
表单控件事件

三.事件对象 

  Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。

  1. 什么时候会产生Event 对象呢? 

         例如: 当用户单击某个元素的时候,我们给这个元素注册的事件就会触发,该事件的本质就是一个函数,而该函数的形参接收一个event对象

       2.事件通常与函数结合使用,函数不会在事件发生前被执行!

关于event对象

属性 描述
altKey 返回当事件被触发时,”ALT” 是否被按下。
button 返回当事件被触发时,哪个鼠标按钮被点击。
clientX 返回当事件被触发时,鼠标指针的水平坐标。
clientY 返回当事件被触发时,鼠标指针的垂直坐标。
ctrlKey 返回当事件被触发时,”CTRL” 键是否被按下。
metaKey 返回当事件被触发时,”meta” 键是否被按下。
relatedTarget 返回与事件的目标节点相关的节点。
screenX 返回当某个事件被触发时,鼠标指针的水平坐标。
screenY 返回当某个事件被触发时,鼠标指针的垂直坐标。
shiftKey 返回当事件被触发时,”SHIFT” 键是否被按下
  IE 属性(除了上面的鼠标/事件属性,IE 浏览器还支持下面的属性)
属性 描述
cancelBubble 如果事件句柄想阻止事件传播到包容对象,必须把该属性设为 true。
fromElement 对于 mouseover 和 mouseout 事件,fromElement 引用移出鼠标的元素。
keyCode 对于 keypress 事件,该属性声明了被敲击的键生成的 Unicode 字符码。对于 keydown 和 keyup
offsetX,offsetY 发生事件的地点在事件源元素的坐标系统中的 x 坐标和 y 坐标。
returnValue 如果设置了该属性,它的值比事件句柄的返回值优先级高。把这个属性设置为
srcElement 对于生成事件的 Window 对象、Document 对象或 Element 对象的引用。
toElement 对于 mouseover 和 mouseout 事件,该属性引用移入鼠标的元素。
x,y 事件发生的位置的 x 坐标和 y 坐标,它们相对于用CSS动态定位的最内层包容元素。

  标准Event属性

属性和方法 描述
bubbles 返回布尔值,指示事件是否是起泡事件类型。
cancelable 返回布尔值,指示事件是否可拥可取消的默认动作。
currentTarget 返回其事件监听器触发该事件的元素。
eventPhase 返回事件传播的当前阶段。
target 返回触发此事件的元素(事件的目标节点)。
timeStamp 返回事件生成的日期和时间。
type 返回当前 Event 对象表示的事件的名称。
initEvent() 初始化新创建的 Event 对象的属性。
preventDefault() 通知浏览器不要执行与事件关联的默认动作。
stopPropagation() 不再派发事件。

四.jQuery的事件绑定和解绑

1、绑定事件

语法:

bind(type,data,fn)

描述:为每一个匹配元素的特定事件(像click)绑定一个事件处理器函数。

参数解释:

type (String) : 事件类型

data (Object) : (可选) 作为event.data属性值传递给事件对象的额外数据对象

fn ( Function) : 绑定到每个匹配元素的事件上面的处理函数

示例:

当每个p标签被点击的时候,弹出其文本

$("p").bind("click", function(){  alert( $(this).text() );});

你可以在事件处理之前传递一些附加的数据。

function handler(event) {//event.data 可以获取bind()方法的第二个参数的数据  alert(event.data.foo);}$("p").bind("click", {foo: "bar"}, handler)

通过返回false来取消默认的行为并阻止事件起泡。

$("form").bind("submit", function() { return false; })

通过使用 preventDefault() 方法只取消默认的行为。

$("form").bind("submit", function(event){  event.preventDefault();});

2、解绑事件

语法:

unbind(type,fn);

描述:

bind()的反向操作,从每一个匹配的元素中删除绑定的事件。

如果没有参数,则删除所有绑定的事件。

如果把在绑定时传递的处理函数作为第二个参数,则只有这个特定的事件处理函数会被删除。

参数解释:

type (String) : (可选) 事件类型

fn(Function) : (可选) 要从每个匹配元素的事件中反绑定的事件处理函数

示例:

把所有段落的所有事件取消绑定

$("p").unbind()

将段落的click事件取消绑定

$("p").unbind( "click" )

删除特定函数的绑定,将函数作为第二个参数传入

var foo = function () {  //绑定事件和解绑事件的事件处理函数};$("p").bind("click mouseenter", foo); // 给p段落绑定click mouseenter事件$("p").unbind("click", foo); // 只解绑了p段落标签的click事件

3.自定义事件

其实事件的绑定和解绑,都是我为了自定义事件做准备(大家把jQuery的提供的事件熟记在心),以后对jquery熟了以后,可以玩一下自定义事件

语法:

trigger(type,data);

描述:在每一个匹配的元素上触发某类事件,它触发的是由bind()注册的自定义事件。

参数解释:

type (String) : 要触发的事件类型

data (Array) : (可选)传递给事件处理函数的附加参数

示例:

给一个按钮添加自定义的事件

$('button').bind('myClick',function(ev,a,b){    //给button按钮添加的自定义事件myClick事件        })

然后通过trigger()触发自定义的事件

$('button').trigger('myClick',[1,2])

4.补充 一次性事件

语法:

one(type,data,fn)

描述:

为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数。在每个对象上,这个事件处理函数只会被执行一次。其他规则与bind()函数相同

参数解释:

type (String) : 事件类型

data (Object) : (可选) 作为event.data属性值传递给事件对象的额外数据对象

fn (Function) : 绑定到每个匹配元素的事件上面的处理函数

示例:

当所有段落被第一次点击的时候,显示所有其文本。

$("p").one("click", function(){//只有第一次点击的时候才会触发,再次点击不会触发了  alert( $(this).text() );});

 五.事件委托(事件代理)

1.概念

  通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事件。

原理: 

  利用冒泡的原理,把事件加到父级上,触发执行效果。

作用:

  性能要好

  针对新创建的元素,直接可以拥有事件

事件源:

  跟this作用一样(他不用看指向问题,谁操作的就是谁),event对象下的

使用情景:

  为DOM中的很多元素绑定相同事件;

  为DOM中尚不存在的元素绑定事件;

    
Document

语法:

on(type,selector,data,fn);

  在选定的元素上绑定一个或多个事件处理函数

events( String) : 一个或多个空格分隔的事件类型
selector( String) : 一个选择器字符串,用于过滤出被选中的元素中能触发事件的后代元素
data: 当一个事件被触发时,要传递给事件处理函数的event.data
fn:回调函数
 

转载于:https://www.cnblogs.com/chenxi67/p/9755667.html

你可能感兴趣的文章
Codeforces 620E(线段树+dfs序+状态压缩)
查看>>
css3动画属性
查看>>
Mongodb 基本命令
查看>>
控制文件的备份与恢复
查看>>
软件目录结构规范
查看>>
mysqladmin
查看>>
解决 No Entity Framework provider found for the ADO.NET provider
查看>>
设置虚拟机虚拟机中fedora上网配置-bridge连接方式(图解)
查看>>
[置顶] Android仿人人客户端(v5.7.1)——人人授权访问界面
查看>>
ES6内置方法find 和 filter的区别在哪
查看>>
Android实现 ScrollView + ListView无滚动条滚动
查看>>
java学习笔记之String类
查看>>
UVA 11082 Matrix Decompressing 矩阵解压(最大流,经典)
查看>>
硬件笔记之Thinkpad T470P更换2K屏幕
查看>>
iOS开发——缩放图片
查看>>
HTTP之URL的快捷方式
查看>>
满世界都是图论
查看>>
配置链路聚合中极小错误——失之毫厘谬以千里
查看>>
蓝桥杯-分小组-java
查看>>
Android Toast
查看>>