Skip to content
此页目录
本文总阅读量

jQuery 事件

event对象

jq中的事件对象 不需要兼容了 直接传参ev就可以了

  • ev.clientX/ev.clientY 事件触发的位置到浏览器可视区的上左边的距离
  • ev.currentTarget:当前事件触发的元素
  • ev.delgateTarget:当前事件绑定的元素
  • ev.offsetX/ev.offsetY: 事件触发的位置到元素的上左边的距离
  • ev.originalEvent: 元素事件对象
  • ev.pageX/ev.pageY:事件触发的位置到文档的上左边的距离
  • ev.screenX/ev.screenY:事件触发的位置到屏幕的上左边的距离
  • ev.which 类似于 keyCode 可以获取鼠标的键值 左键是1 右键是3 滚轮是2
  • 阻止默认事件 ev.preventDefault()
  • 阻止冒泡 ev.stopPropagation()
  • 阻止默认事件+冒泡 return false

事件绑定 on()

js
// 基本事件
$('#box').on('click',function(){})

// 一次绑定多个事件对应一个处理函数
$('#box').on('click mouseenter mouseleave',function(){})

// 绑定多个事件对应多个处理函数 对象形式
$('#box').on({
  'click': function(){},
  'dblclick':function(){}
})

// 自定义事件
$('#box').on('hahaha',function(){})

// trigger 触发事件
$('#box').trigger('hahaha');

// 事件委托
$('#list').on('click','li',function(ev){
  console.log($(ev.target).html());
})

// 事件的取消绑定
$('button:eq(0)').on('click', function(){
  console.log(1111);
})

$('button:eq(1)').on('click',function(){
  $('button:eq(0)').off();
  // $('button:eq(0)').off('mouseenter');
  // 传参取消事件类型
})

// 一个事件上绑定多个函数执行---事件的命名空间
$('button:eq(0)').on({
  'click.a':function(){
console.log(111);
  },
  'click.b':function(){
console.log(222);
  }
})

$('button:eq(1)').on('click',function(){
  $('button:eq(0)').off('click.a');
})

// 只执行一次的事件
$('button').eq(0).one('click',function(){
  console.log('一次就够了');
})

// 模拟执行一次事件
$('button').eq(0).on('click',function(){
  console.log('一次就够了');
  $(this).off();
})

合成事件

mouseenter 和 mouseleave

js
$('#box').hover(function(){
  // 鼠标移入执行函数
},function(){
  // 鼠标移出执行函数
})

评论

交流群