js中的this上下文会因事件而转换成html dom对象。
所以就有这样获取当前触发事件的dom对象:
window.event.srcElement || window.event.target;
var e = window.event || e; var srcElement = e.srcElement || e.target; var id=srcElement.id.split("_")[1];//不采用闭包的话就只能手动加id了
jquery的话,就$('this')
但是在MVC的工程内部,比如事件对象是evt:
evt.srcElement (IE支持,对于生成事件的 Window 对象、Document 对象或 Element 对象的引用。)
evt.target (返回触发此事件的元素)
evt.currentTarget(返回其事件监听器触发该事件的元素,在捕获和起泡阶段,该属性是非常有用的,因为在这两个节点,它不同于 target 属性。)
evt.bubbles(指示是否起泡事件类型)
有趣的是,在appframework中如果采用的是on方法,事件委托给父级节点,那么srcElement,target,currentTarget全都指向了该父节点,而不会指向实际触发事件的子元素。
照理说,target应该是指向事件的目标节点,应该返回真正触发事件的子元素。
一般在事件绑定的时候指定的回调函数里面就可以接收这个e参数,
比如:
itu.event.on($el.find(me.PIC), "tap", me.picTrigger, me);
picTrigger : function(e){
var me = this,$el = me.$element;
var id = $(event.target).data("id");
$el.trigger("reviewList",id);
}
这样就可以获取PIC元素的自定义属性data-id值