我有一些有趣的代码似乎不想听我说。基本上,我试图影响一些变焦按钮出现在地图上,具体取决于将要使用的地图。
虽然没有附加缩放按钮开始工作,但后来在更改为使用它们的地图时添加缩放按钮也没有抗议,我不能为我的生活删除按钮一旦他们已被追加。
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
地图的区域,则不会删除按钮。我已经尝试了上面三种不同的方法来删除按钮,但没有发生任何事情。
还有另一种方法可以删除()(不是在这里寻找一个更干净的解决方案,只是一种方法来完成这项工作!)或者我做错了什么?
答案 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();