追加后删除不会删除

时间:2011-09-26 15:30:33

标签: javascript jquery append

我有一些有趣的代码似乎不想听我说。基本上,我试图影响一些变焦按钮出现在地图上,具体取决于将要使用的地图。

虽然没有附加缩放按钮开始工作,但后来在更改为使用它们的地图时添加缩放按钮也没有抗议,我不能为我的生活删除按钮一旦他们已被追加。

JS:

Map = function()
{

   var $MapContainer;

   this.initMap = function($container)
   {
      $MapContainer = $container;
   }

   this.setZoomButtons = function(mapImage)
   {
      if(mapImage != "map_noZoom.jpg")
      {
         $MapContainer.append("<div id='mapZoomIn' class='MapZoomInButton' OnClick='Star.Bus.fire(\"zoomIn\",1)'>+</div>");
         $MapContainer.append("<div id='mapZoomOut' class='MapZoomOutButton' OnClick='Star.Bus.fire(\"zoomOut\",-1)'>-</div>");
      }
      else
      {
         // I've tried all 3 ways below to have the zoom buttons removed - none successful
         // Only showing the zoom in button for the example
         $MapContainer.remove("#mapZoomIn");
         $MapContainer.remove(".MapZoomInButton");
         $MapContainer.remove("<div id='mapZoomIn' class='MapZoomInButton' OnClick='Star.Bus.fire(\"zoomIn\",1)'>+</div>");
      }
   }
}

如果我首先输入的地图是没有缩放按钮(map_noZoom.jpg)的地图,则不存在缩放按钮。我在游戏中使用不同的地图切换区域,并出现缩放按钮。如果我返回map_noZoom.jpg地图的区域,则不会删除按钮。我已经尝试了上面三种不同的方法来删除按钮,但没有发生任何事情。

还有另一种方法可以删除()(不是在这里寻找一个更干净的解决方案,只是一种方法来完成这项工作!)或者我做错了什么?

3 个答案:

答案 0 :(得分:2)

您对选择器传递给.remove([selector])的内容感到困惑。它与您调用它的元素的子元素不匹配,而是充当您调用它的所选元素的过滤器,因此$MapContainer.remove("#mapZoomIn");会删除ID为{{$MapContainer的所有mapZoomIn元素1}};

您需要做的是先找到元素,然后将其删除:

$MapContainer.find('#mapZoomIn').remove();

答案 1 :(得分:1)

您必须find某些元素并将其删除,如下所示:

// find .mapZoomInButton inside $MapContainer and remove those elements
$MapContainer.find(".mapZoomInButton").remove();
带有选择器的

.remove会过滤当前的集合(即$MapContainer),这不是您想要的。

答案 2 :(得分:0)

$MapContainer.find(".MapZoomInButton").remove();

或更简单地说:

$(".MapZoomInButton").remove();