js跟jq的事件绑定以及解绑
2018-10-18 本文已影响0人
王帅同学
事件绑定
基本的事件绑定
var btn = document.getElementById('btn');
// dom 0 级绑定事件的方式
// 事件处理程序只能绑定一个,绑定多个事件处理程序后面的会覆盖前面的。
btn.onclick = function() {
console.log('1234');
// this === 绑定事件的dom对象
};
// dom2级绑定事件的方式
// 可以绑定多个事件处理程序,多个事件处理程序的执行顺序不能保证。
if(btn.addEventListener) {
btn.addEventListener('click', function(e) {
console.log('1234');
}, false);
} else {
// 兼容ie8及以下浏览器。
btn.attachEvent('onclick', function() {
var e = window.event;
});
}
//jQuery绑定事件方法
$('#btn').click(function(e){ // e =jQuery.fn.event
console.log('123456');
});
其他事件绑定
var $inputArray = $('.input-box input');
// jQuery构造函数传入选择器,返回的是一个jQuery的包装对象
// 大部分的api都是在jQuery包装对象上
// console.dir($inputArray);
//★focus()方法
$inputArray.focus(function(e) {
console.log(this.value); // this 就是当前的input标签
});
// ★change()方法,简单绑定事件,接受两个参数的情况
$inputArray.change('12334', function(e) {
console.dir(e); // jQuery封装的事件对象。
console.log(e.data);
});
// 事件方法被调用,但没有传递参数
// 代码触发此事件,并模拟当前事件对应的操作。
$inputArray[2].focus(); // 触发focuse事件,模拟获取焦点的操作。
On 替代bind方法/解绑用unbind
// on 替代 bind绑定事件的方式。
$('#btn').on('click', function(e) {
console.log(123);
});
on代替live动态创建元素绑定事件的方法/解绑用die
var domP = document.createElement('p');
//innerHTML(ie8) textContent(firefox)
//Chrome支持前两者
domP.innerHTML = "1234";
$(domP).on('click', function(e) {
console.log($(this).text());
})
On 替代delegate(委托事件)方法/解绑用undelegate
// On 替代delegate方法
$('.list').on('click', 'li', function(e) {
console.log( $(this).html() );
});
动态创建标签并绑定到树上
//js方法
var domP = document.createElement('p');
domP.innerHTML = "1234";
// 给页面中的body添加p标签
document.body.appendChild(domP);
//jq方法
var $domP = $('<p class=" a1">122222</p>');
// 给页面中的body添加$domP标签
$("body").append($domP);
解绑事件 .off()
// 解绑命名空间事件
// event.name 给事件命名,方便解绑制定名的
$("#btnOffNameSpace").on('click', function(e) {
// 解绑了命名空间的事件,
// 其他命名空间的事件或者没有命名空间的事件不受影响。
$('.list li').off('click.demo');
});