日期:2014-05-16  浏览次数:20448 次

if (e.stopPropagation) {e.stopPropagation();}
问题1:function doSubmit(e),里边为什么加个 e,表达什么含义

问题2:if (e.stopPropagation) {e.stopPropagation();}      e.stopPropagation出现2次,什么意思

问题3:我百度下,下边2个都是阻止事件的扩散,为什么这么做?
    if (e.stopPropagation) {e.stopPropagation();}     
    e.cancelBubble = true;   





function doSubmit(e) {
    if (formChecker != null) {
        clearInterval(formChecker);
        formChecker = null;}                           //清除定时器
    e = e || window.event;
    if (e.stopPropagation) {e.stopPropagation();}
    e.cancelBubble = true;
    try {
        $("input[type='submit']").attr("disabled", "disabled");
        swfu.startUpload();                             //上传队列中第一个文件
    } catch (ex) {
        $("input[type='submit']").removeAttr("disabled");
        this.debug(ex);
    }
    return false;
}

------解决方案--------------------
1、e是事件触发后传进来的一堆参数,可以自己打印一下看看。
2、判断是否有效,IE貌似不支持。
3、cancelBubble是ie以及版本较新的chrome opera组织事件冒泡的,firefox不支持,所以就要用stopPropagation来兼容ff。


所以2、3就是为了兼容性,
------解决方案--------------------
1、表示事件对象
2、先判断是否存在,再执行,很合乎常理啊
3、兼容浏览器,首先尝试使用DOM方法阻止事件流,否则就使用 IE 的 cancelBubble  属性。
------解决方案--------------------
可以这么理解
stopPropagation 是e 的方法或属性