事件绑定 事件委托

1.在dom元素中直接绑定

<div onclick="myAlert()">
function myAlert(){ }

2.在JavaScript代码中绑定

document.getElementById("demo").onclick = function () {
  alert(this.getAttribute("type"));
}

3.绑定事件监听函数

el.addEventListener("click",function(){},false);
el.removeEventListener("click",function(){},false);

//兼容

function addEvent(element, type, handle) {
  try {  // Chrome、FireFox、Opera、Safari、IE9.0及其以上版本
    element.addEventListener(type, handle, false);
  } catch (e) {
    try {  // IE8.0及其以下版本
      element.attachEvent('on' + type, handle);
    } catch (e) {  // 早期浏览器
      element['on' + type] = handle;
    }
  }
}
function handle() { alert(1); }
addEvent(document.getElementById("demo"), "click", handle);

//  或者
//  if (element.addEventListener) {
//  } else if (element.attachEvent) {
//  } else { }

jQuery的事件处理

$('a').bind('click', function () { });
$('a').live('click', function () { });
$('a', $('#container')[0]).live('click', function () { });

 

为ui下每个li绑定点击事件

不用事件委托

function addListeners4Li(liNode) {
  liNode.onclick = function clickHandler() {
    console.log(this);//<li id="post-3">Item 3</li>
  };
}
window.onload = function () {
  var ulNode = document.getElementById("ul");
  var liNodes = ulNode.getElementsByTagName("Li");
  for (var i = 0, l = liNodes.length; i < l; i++) {
    addListeners4Li(liNodes[i]);
  }
};

不用事件委托

var oUl = document.getElementById("ul");
oUl.onclick = function (e) {
  var e = e || window.event;
  var target = e.target || e.srcElement;

  //ie:window.event.srcElement//标准下:event.target
  if (target.nodeName.toLowerCase() == "li") {
    console.log(target);//<li id="post-3">Item 3</li>
    console.log(this);//<ul...
  }
};

事件委托

$("#ul").delegate("li", "click", function(){
  console.log(this);
});
posted @ 2016-08-01 15:38  slting  阅读(258)  评论(0)    收藏  举报