删除后显示没了,但取容器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()
------解决方案--------------------
你最后弹出的本意就是要弹出个空对话框吗?
如果是这样,就没问题啊!
------解决方案--------------------
我认为不对,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则是清空其子元素,但本身还是保留的。