lc
lc
  • 发布:2015-06-10 11:52
  • 更新:2015-06-10 11:52
  • 阅读:1930

on绑定事件,源码查看

分类:MUI
mui
$.fn.on = function(event, selector, callback) { //仅支持简单的事件委托,主要是tap事件使用,类似mouse,focus之类暂不封装支持  
        return this.each(function() {  
            var element = this;  
            mid(element);  
            mid(callback);  
            var isAddEventListener = false;  
            var delegateEvents = delegates[element._mid] || (delegates[element._mid] = {});  
            var delegateCallbackObjs = delegateEvents[event] || ((delegateEvents[event] = {}));  
            if ($.isEmptyObject(delegateCallbackObjs)) {  
                isAddEventListener = true;  
            }  
            var delegateCallbacks = delegateCallbackObjs[selector] || (delegateCallbackObjs[selector] = []);  
            delegateCallbacks.push(callback);  
            if (isAddEventListener) {  
                delegateFns[mid(element)] = delegateFn(element, event, selector, callback);  
                element.addEventListener(event, delegateFns[mid(element)]);  
                if (event === 'tap') { //TODO 需要找个更好的解决方案  
                    element.addEventListener('click', function(e) {  
                        if (e.target) {  
                            var tagName = e.target.tagName;  
                            if (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && tagName !== 'SELECT') {  
                                e.preventDefault();  
                            }  
                        }  
                    });  
                }  
            }  
        });  
    };

这是最新的mui.js的on事件绑定的源码,
我想请问下,后面,

if (event === 'tap') { //TODO 需要找个更好的解决方案  
                    element.addEventListener('click', function(e) {  
                        if (e.target) {  
                            var tagName = e.target.tagName;  
                            if (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && tagName !== 'SELECT') {  
                                e.preventDefault();  
                            }  
                        }  
                    });  
                }

这里判断 是tap事件,就监听 click事件,跟直接addEventListener click有什么区别,我直接addEventListener 也可以在父元素上响应子元素事件呢??

2015-06-10 11:52 1 条评论 负责人:无 分享
已邀请:

该问题目前已经被锁定, 无法添加新回复