2009-08-12 54 views
4

我正在使用prepend()函數來顯示圖片,當一個div徘徊時。如何刪除圖像 - 即什麼是預先準備的對面()jQuery - 如何撤消prepend

下面是代碼:

$("#hover-div").hover(
     function() { $("#image-div").prepend("<img src='images/arrow_redo.png' width='16' height='16' />"); }, 
     function() { $("#image-div").someFunction("<img src='images/arrow_redo.png' width='16' height='16' />"); } 
     ); 

someFunction只是一個虛擬的 - 我真的不希望它做任何事情。

+0

你能否提供你正在使用當前創建圖像的代碼/附加懸停事件? – gnarf 2009-08-12 09:34:39

+0

添加不隱藏/顯示圖像,而不是預先添加它。 – MrHus 2009-08-12 13:19:07

回答

0
$("#image-div").prev().remove(); 

這將選擇以前的元素並將其刪除。

+1

-1這是錯誤的,因爲prev選擇一個以前的兄弟姐妹。他想要選擇的是一個image-div的孩子 – 2009-08-12 09:49:15

+0

在他有任何代碼之前寫了這個。不知道remove()會從哪裏觸發。 – smack0007 2009-08-12 09:55:08

1

如果在應用prepend()之前將節點的內容存儲在變量中,那麼情況如何?

+0

這對內容豐富的元素不會有好處。 – rahul 2009-08-12 09:33:39

+1

沒錯。好的,如果他在開始時添加了標籤,這意味着它是該節點的第一個孩子,並且可以輕鬆地將其刪除。 – 2009-08-12 09:38:34

5

如果您有圖像元素的ID,您可以簡單地使用remove方法。

$("#imgID").remove(); 
+0

這會工作,但效率不高,因爲您正在運行另一個選擇器,而不是存儲與圖像對象的引用var。在奇怪的場合授予它會很方便,但是試着做成千上萬次,然後你開始注意到區別 – 2009-08-12 10:02:28

1

這可能是處理的最佳方式 - 再加上我認爲它會預加載圖像反正你作爲一個額外的好處(儘管不是正)

var $img = $("<img src='images/arrow_redo.png' width='16' height='16' />"); 
$('#hover-div').hover(function() { 
    $('#image-div').prepend($img); 
}, function() { 
    $img.remove(); 
}); 

否則:

$(this).children().eq(0).remove(); 

會找到第一個孩子並將其刪除。要小心,如果事件碰巧發生兩次 - 它可能會刪除更多的不僅僅是你的圖像。

+0

+1 $(this).children()。eq(0).remove();爲我工作,我不必創建一個全球。 =)謝謝你,先生 – 2012-03-25 14:45:36

0

最初是否真的是最好的選擇?請記住,DOM操作可能會很昂貴,所以你可以做的任何事情來緩解這種情況會很好

聽起來像你可能會更好地在背景中顯示圖像,並在鼠標懸停div時切換它。

喜歡的東西:

$("#MyDiv").mouseover(function(){ 
    $(this).find("img").toggle(); 
}); 

$("#MyDiv").mouseout(function(){ 
    $(this).find("img").toggle(); 
}); 

,或者,使用.hover

這是未經測試,可重構更好,但考慮什麼,我希望在得到的想法!

3

而不是使用prepend嘗試使用prependTo - 讓我證明:

var img; 
$("#hover-div").hover(
    function() { 
     img = $("<img src='images/arrow_redo.png' width='16' height='16' />").prependTo("#image-div"); 
    }, 
    function() { 
     img.remove(); 
    } 
); 

這允許你創建一個保存到您的圖像的引用,這樣就可以在前面加上後操縱它的變量。

希望這有助於

0

您可以添加屬性預謀的元素,後來更多的找到他們......

$("#hover-div").hover(
    function() { 
    $("<img src='image.png' />").prependTo("#image-div").attr('prepended','yes'); 
    }, 
    function() { 
    $("[prepended=yes]", "#image-div").remove(); 
    } 
);