2009-08-12 51 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(); 
    } 
);