我想从DOM中删除div,但由于某种原因.remove()无效。我认为它是一个不正确的选择器,但我可以使用.html()获得html。这是我的代码:
HTML:
<div id="collectionsHeading" class="filter-toggle-heading ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" role="tab" aria-expanded="false" aria-selected="false" tabindex="-1">
<span class="ui-icon ui-icon-triangle-1-e"></span>
<i class="icon-caret-down"></i>
Collection
<div class="filter-applied">
<span class="right">(8)</span>
Internal
</div>
</div>
jQuery的/使用Javascript
$('#collections').val(collections);
var selectedCollection = $('#collectionList').children('#'+collections).html();
var headingValue = $('#collectionsHeading').html();
$('#collectionsHeading').find('.filter-applied').remove();
$('#collectionsHeading').html(headingValue+'<div class="filter-applied">'+selectedCollection+'</div>');
我尝试的其他事情是.children()并在第一个选择器中将它们全部放入。所有情况都允许我拉.html(),但.remove()永远不会工作。有什么想法吗?
答案 0 :(得分:2)
删除工作正常,只是它对最终结果没有影响。
您将在标题中获取HTML代码:
var headingValue = $('#collectionsHeading').html();
在这里删除标题内的元素:
$('#collectionsHeading').find('.filter-applied').remove();
在这里删除标题内的所有内容,并在删除该元素之前放入所有内容,以及另一个元素:
$('#collectionsHeading').html(headingValue+'<div class="filter-applied">'+selectedCollection+'</div>');
因此,删除元素没有任何效果,因为在删除它之前获取它的HTML代码,然后使用该HTML代码将所有原始元素放回去。
我认为你所追求的是删除元素,然后添加它的新版本。不要获取HTML代码并将其放回去,只需使用remove
和append
删除和添加元素:
$('#collectionsHeading').find('.filter-applied').remove();
$('#collectionsHeading').append('<div class="filter-applied">'+selectedCollection+'</div>');
答案 1 :(得分:0)
似乎工作正常
$('#collectionsHeading').find('.filter-applied').remove();
这是一个小提琴......如果你注释掉一行并点击播放,则不会删除该对象。
可能是你正在使用的jQuery版本的问题,还是可能在dom准备好之前触发?