第一种
$('.navClass').each(function() {
$(this).find('.navItemClass').on('click', function (e) {
...
});
});
第二种
$('.navClass').on('click', '.navItemClass', function (e) {
...
});
第一种和第二种有区别没?
第一种那样的怎么事件委派?
简单的说,不一样!
第一种情况下是对对已经存在的 DOM,去逐一绑定事件。如果绑定事件之后容器内的元素发生变化(尤其是增加),新元素是不会有事件的,除非再绑。
第二种情况是直接在容器上绑定事件,代理内部元素的对应事件,因此,容器内的元素是可以动态变化的(因为事件是绑在容器上),新增加的元素也会有相应的事情(毕竟是容器代理)。
不过第二种也有坑,如果内部元素上绑定了事件,而且在事件处理中阻止冒泡,那容器对该元素的代理就失效了,因为事件没冒上来嘛,容器压根不知道有事发生。