我有一个jQuery函数,当div悬停时会显示一个弹出菜单:
<script type="text/javascript">
$('.thumbnail').hover(function (e) {
$(this).children('.pop-up').show()
.css('top', e.pageY + 20)
.css('left', e.pageX + 10)
.appendTo('body');
}, function () {
$(this).children('.pop-up').hide();
});
</script>
第一个功能运行良好(当光标悬停在div上时会显示弹出菜单)但第二个功能不是(隐藏功能)
有什么想法吗?谢谢
修改
这是我的HTML结构:
<div class="thumbnail">
.........
<div class='pop-up'><h3>"@thumbnail.Forfait.Titre"</h3><p>"@thumbnail.Forfait.Description"</p></div>
</div>
答案 0 :(得分:2)
这是因为您已将.pop-up
元素附加到正文,因此它们不再是.thumbnail
元素的子元素。
将第二个函数中的代码更改为此代码,它应该可以工作:
$('body').children('.pop-up').hide().appendTo(this);
这假设没有其他元素具有.pop-up
编辑 - 正如评论中的cfs所述。最好将弹出窗口重新附加到缩略图,以便下次悬停时仍可使用。
答案 1 :(得分:1)
当您将.pop-up
附加到body
时,它不再是.thumbnail
div的子项,而是body
的子项,所以
$(this).children('.pop-up').hide();
不起作用。
为什么你首先要附着在身体上?这似乎没必要。
答案 2 :(得分:1)
嗯,您在第一个处理程序中选择的.pop-up
元素会附加到body
元素。
在另一个处理程序上,$(this).children('.pop-up')
不再返回任何元素,因为它们不再是子元素了。