jQuery .remove()不工作,而其他内置函数是

时间:2013-12-06 00:33:36

标签: javascript jquery html

我想从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()永远不会工作。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

删除工作正常,只是它对最终结果没有影响。

您将在标题中获取HTML代码:

var headingValue = $('#collectionsHeading').html();

在这里删除标题内的元素:

$('#collectionsHeading').find('.filter-applied').remove();

在这里删除标题内的所有内容,并在删除该元素之前放入所有内容,以及另一个元素:

$('#collectionsHeading').html(headingValue+'<div class="filter-applied">'+selectedCollection+'</div>');

因此,删除元素没有任何效果,因为在删除它之前获取它的HTML代码,然后使用该HTML代码将所有原始元素放回去。

我认为你所追求的是删除元素,然后添加它的新版本。不要获取HTML代码并将其放回去,只需使用removeappend删除和添加元素:

$('#collectionsHeading').find('.filter-applied').remove();
$('#collectionsHeading').append('<div class="filter-applied">'+selectedCollection+'</div>');

答案 1 :(得分:0)

似乎工作正常

$('#collectionsHeading').find('.filter-applied').remove();

这是一个小提琴......如果你注释掉一行并点击播放,则不会删除该对象。

http://jsfiddle.net/bY42X/

可能是你正在使用的jQuery版本的问题,还是可能在dom准备好之前触发?