2011-03-31 44 views
2

我遇到了一个问题,我尝试了几乎所有的解决方案。Jquery,在悬停时添加和移除元素

$('a.hovered').hover(function() { 
    $(this).after(' <img src="images/icons/famfamfam/silk/user_go.png" />'); 
},function() { 
    $(this).remove(' <img src="images/icons/famfamfam/silk/user_go.png" />'); 
}); 

当然,我尝试了很多版本的remove()没有任何成功。如果有人能帮我解决这个问题,我会很高兴。

此外,我想添加fadeIn()和fadeOut()的效果,但当然这也不成功。

我可以添加图像,但无法删除它(甚至在我能成功添加图像时无法使用)。

谢谢您的帮助和时间提前。

+0

你没有解释它有什么问题。 – 2011-03-31 09:42:38

+0

@Tomalak Quote:“我可以添加图像,但我不能删除它。” – 2011-03-31 09:44:18

+0

@das_weezul:“我不能删除它”是_不是一个错误的描述。 – 2011-03-31 09:45:37

回答

5

你真的不想这样做。如果您只是显示和隐藏始终存在的图像,您的代码将更快,更清晰,更易于维护。

只需将img放入HTML中,并使用id设置,并使用style="display: none;"即可隐藏它。然后

你的JavaScript代码就变成了:

$('a.hovered').hover(function() { 
    $("#user_go").show(); 
},function() { 
    $("#user_go").hide(); 
}); 
+0

我喜欢你的解决方案,谢谢。 – Revenant 2011-03-31 09:58:02

0

.remove()不带走一片HTML的:

$('a.hovered').hover(function() { 
    $(this).after(' <img src="images/icons/famfamfam/silk/user_go.png" id="go_image" />'); 
},function() { 
    $('#go_image').remove(); 
}); 
3

名称你的元素,它会让生活更容易为你,即:

$('a.hovered').hover(function() { 
    $(this).after(' <img id="user_go" src="images/icons/famfamfam/silk/user_go.png" />'); 
},function() { 
    $("#user_go").remove(); 
}); 
+0

你有一些不必要的DOM遍历! – 2011-03-31 09:46:37

+0

该元素在*'$(this)'之后插入*,不在其中。因此'$(this).remove('#user_go');'应该失败,因为它不包含在提供的元素集中。 – Lazarus 2011-03-31 09:51:35

+0

这是一个很好的观点。 – 2011-03-31 09:55:37

-1

为什么不这样做呢?

$('a.hovered').hover(function() {  
$(this).after(' <img src="images/icons/famfamfam/silk/user_go.png" />'); }, 
function() { 
$(this).find('img').remove(); 
}); 
+0

你忘记了,该选择器正在引用锚点元素,因为IMG放在了外面,它不能在锚点元素中找到。 – Deele 2011-03-31 09:49:21

+0

哦...对不起,没有看到后面的单词...我确定是看到附加... – 2011-03-31 09:51:42

+0

这不起作用,我已经试过了。 – Revenant 2011-03-31 09:54:57

0

你不能参考这种方式创建的对象,尝试

$('a.hovered').hover(function() { 
    $(this).after(' <img src="images/icons/famfamfam/silk/user_go.png" id="addedImage"/>');}, 
    $('#addedImage').remove(); 
}); 

是的,虽然我写的,其他两位内线同样的东西:)