首先上代码var tt = $( 'button' ).click( function() {
    alert( '13242' );
} );
tt.remove();
$( 'body' ).append( tt );
document.getElementsByTagName( 'button' )[ 0 ].onclick = function() { alert( 2342 ); };
var tt = document.getElementsByTagName( 'button' )[ 0 ];
tt.remove();
document.body.appendChild( tt );在BODY中随便加个BUTTON标签,上面两段代码,第一段代码没有触发alert,而第二段代码触发了alert,原生暂不清楚内部实现,从以上代码可以看出,总之事件没有丢失,jQuery就不同了,请问是什么原因导致了这种情况的发生,是BUG还是jQuery的必然?多谢各位了

解决方案 »

  1.   

    第二个肯定会触 发,暂时不解释为什么会触发,我比较关注第一个JQ的代码,你把这个JQ完整的打出来,还有HTML那一段也一起
      

  2.   

     remove: function (selector, keepData) {
                for (var i = 0, elem; (elem = this[i]) != null; i++) {
                    if (!selector || jQuery.filter(selector, [elem]).length) {
                        if (!keepData && elem.nodeType === 1) {
                            jQuery.cleanData(elem.getElementsByTagName("*"));
                            jQuery.cleanData([elem]);
                        }                    if (elem.parentNode) {
                            elem.parentNode.removeChild(elem);
                        }
                    }
                }            return this;
            },
    jquer的remove有个这个jQuery.cleanData  
      

  3.   

    JS部分就是这个,HTML部分的话,就是一个BUTTON标签,以下是完整代码<html>
    <head>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    </head>
    <body>
    <button>test</button>
    </body>
    </html>
    <script>
    var tt = $( 'button' ).click( function() {
        alert( '13242' );
    } );
    tt.remove();
    $( 'body' ).append( tt );
    </script>原因就如2楼所说,就是因为remove的关系,原先还以为是jQuery因为自己维护了事件队列,所以产生了什么逻辑上的问题,非常感谢哈。