jquery的remove删除不了元素呀

wo4828373 2013-12-16 06:26:01
删除后显示没了,但取容器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());//输出
}


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


...全文
2770 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
piovt25728 2013-12-19
  • 打赏
  • 举报
回复
你最后弹出的本意就是要弹出个空对话框吗? 如果是这样,就没问题啊!
风骑士 2013-12-19
  • 打赏
  • 举报
回复
引用 4 楼 u012463264 的回复:
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则是清空其子元素,但本身还是保留的。
KK3K2005 2013-12-17
  • 打赏
  • 举报
回复
你输出了 删除的元素内部的元素的html()
阿鱼 2013-12-17
  • 打赏
  • 举报
回复
测了下~正常----IE9 chrome
别闹腰不好 2013-12-17
  • 打赏
  • 举报
回复
remove 并不没有移除对象,只是不显示了,还可用选择器 选择到该对象,并且还可以调用该对象的属性。 empty 是真正的移除 ,相当于调用该父对象的html("").
zhjdg 2013-12-16
  • 打赏
  • 举报
回复
没问题。 用调试器看看 _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>
wo4828373 2013-12-16
  • 打赏
  • 举报
回复
刚才我单独测试了下 主要是这个display: none;属性导致问题。 这是个对话框,messages控件用的
天际的海浪 2013-12-16
  • 打赏
  • 举报
回复
ie8测试正常

87,991

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧