刚才我单独测试了下
主要是这个display: none;属性导致问题。
这是个对话框,messages控件用的

解决方案 »

  1.   

    没问题。
    用调试器看看 _p=$(m_this).parent().parent();是什么吧。
    <div id="messages-fj" style="display: none;">
            <h3>附件管理</h3>
            <div id="messages-fj-con">
            <p>本行测试<br/><small><a id='vv' href='javascript:void(0)' onclick='attr_del(this)' class='remove-link'>删除</a> | <a href='#' class='remove-link'>设为封面</a></small></p>
            </div>
     </div>
     
     <script>
     
     function attr_del(m_this)
     {
         _p=$(m_this).parent().parent();
       _p.remove();
     alert($("#messages-fj-con").html());//输出
     }
     
     var $a = $('#vv');
     var $b = $a.parent();
     var $c = $b.parent();
     $c.remove();
     var $e = $("#messages-fj-con").html();
     
     </script>
      

  2.   

    remove 并不没有移除对象,只是不显示了,还可用选择器 选择到该对象,并且还可以调用该对象的属性。
    empty  是真正的移除 ,相当于调用该父对象的html("").
      

  3.   

    你输出了 删除的元素内部的元素的html()
      

  4.   

    我认为不对,jquery remove源码:remove: function( selector, keepData ) {
    var elem,
    elems = selector ? jQuery.filter( selector, this ) : this,
    i = 0; for ( ; (elem = elems[i]) != null; i++ ) { if ( !keepData && elem.nodeType === 1 ) {
    jQuery.cleanData( getAll( elem ) );
    } if ( elem.parentNode ) {
    if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
    setGlobalEval( getAll( elem, "script" ) );
    }
    elem.parentNode.removeChild( elem );
    }
    } return this;
    }elem.parentNode.removeChild( elem );这句显示已经在节点树里删除了该元素。而empty则是清空其子元素,但本身还是保留的。