当前位置: 代码迷 >> JavaScript >> jquery的remove删除不了元素呀解决方案
  详细解决方案

jquery的remove删除不了元素呀解决方案

热度:430   发布时间:2013-12-23 14:30:52.0
jquery的remove删除不了元素呀
删除后显示没了,但取容器html()代码时,还存在。具体代码如下
 <div id="messages-fj" style="display: none;">
        <h3>附件管理</h3>
        <div id="messages-fj-con">
        <p>本行测试<br/><small><a href='javascript:void(0)' onclick='attr_del(this)' class='remove-link'>删除</a> | <a href='#' class='remove-link'>设为封面</a></small></p>
        </div>
 </div>


  function attr_del(m_this)
      {
       _p=$(m_this).parent().parent();
        _p.remove();
      alert($("#messages-fj-con").html());//输出
      }


在“输出”那里,结果没有任何变动。



------解决方案--------------------
ie8测试正常
------解决方案--------------------
没问题。
用调试器看看 _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>

------解决方案--------------------
remove 并不没有移除对象,只是不显示了,还可用选择器 选择到该对象,并且还可以调用该对象的属性。
empty  是真正的移除 ,相当于调用该父对象的html("").
------解决方案--------------------
测了下~正常----IE9 chrome
------解决方案--------------------
你输出了 删除的元素内部的元素的html()
------解决方案--------------------
你最后弹出的本意就是要弹出个空对话框吗?
如果是这样,就没问题啊!
------解决方案--------------------
引用:
remove 并不没有移除对象,只是不显示了,还可用选择器 选择到该对象,并且还可以调用该对象的属性。
empty  是真正的移除 ,相当于调用该父对象的html("").

我认为不对,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则是清空其子元素,但本身还是保留的。
  相关解决方案