猿问

关于jQuery中的noCloneEvent实现的问题

jQuery源码:

if ( div.attachEvent && div.fireEvent ) {
        div.attachEvent("onclick", function click() {
            // Cloning a node shouldn't copy over any
            // bound event handlers (IE does this)
            jQuery.support.noCloneEvent = false;
            div.detachEvent("onclick", click);
        });
        div.cloneNode(true).fireEvent("onclick");
    }

noCloneEvent这个特性检测条件,应该针对所有的浏览器都进行判断,但是这里为什么只针对IE时行判断?

弑天下
浏览 513回答 1
1回答

不负相思意

因为只有IE会把事件一起复制过去啊…… jQuery的特性检测是以事实的业界已经获知的数据为前提,而不是完全通用性地去检测一个特性,比如noClonetEvent就是已知只在IE中出现的问题,其他的浏览器再升级也不会升出这种BUG来,但高版本的IE可能会修复这个BUG,因此需要检测一下
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答