2011-09-26 58 views
0

我有一個代碼搞笑位,它似乎並沒有要聽我後刪除。本質上,我試圖影響某些縮放按鈕在地圖上顯示的時間,具體取決於要使用哪個地圖。追加不去除

雖然開始時沒有附加縮放按鈕,但是在更改爲使用它們的地圖時後來添加縮放按鈕也沒有發生抗議,我不能在我的生活中刪除按鈕,已被追加。

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地圖的區域,按鈕不會被刪除。我已經嘗試了上述三種不同的方式來刪除按鈕,但沒有發生任何事情。

是否有另一種方式來刪除()(不是在尋找一個清晰的解決方案在這裏,只是一種有這個工作!)還是我做錯了什麼?

回答

2

你困惑是什麼選擇傳遞給.remove([selector])呢。它不匹配的元素的孩子你怎麼稱呼它的,而是作爲你叫它對這些選定的元素過濾器,所以$MapContainer.remove("#mapZoomIn");刪除所有$MapContainer元素與mapZoomIn的ID;

你需要做的是先找到元素,然後將其刪除:

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

你是對的!謝謝你向我解釋這個,它解決了這個問題! – Briz

+0

沒有問題,請確保接受答案。 。 – Chad

+0

或者,你可以建立孩子的jQuery集合,並從那裏取出:'$ MapContainer.children()刪除( '#MapZoomIn,#MapZoomOut');' –

1

你必須find某些元素和這樣的刪除:

// find .mapZoomInButton inside $MapContainer and remove those elements 
$MapContainer.find(".mapZoomInButton").remove(); 

.remove有選擇過濾電流設定(即$MapContainer),這是不是你想要的。

+0

謝謝你,謝謝你,謝謝你!這完全正確,解決了問題! – Briz

0

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

,或者更簡單地說:

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