jQuery列表中每个产品的基于悬停的弹出事件
jQuery hover-based popup events for every product in list
我对jquery中的一个函数有点问题。每次用户悬停产品时,我都需要显示一个弹出窗口。我的产品在一个列表中,我想为每个产品指定一个弹出窗口,以便显示其标题和描述:
这是产品列表(以缩略图形式显示)
<!-- This Div contains the List of Products -->
<ul class="thumbnails">
@foreach (var thumbnail in Model.ForfaitsInThumbNail)
{
<div class="thumbnail">
<img src= "@Url.Action("GetById", "ImageForfait", new { idForfait = thumbnail.Forfait.Id })" alt=""/>
<div class="caption">
<h2 class="fontTitle">@thumbnail.Forfait.Titre</h2> <h5 class="fontYearHijri"> pour l'année @thumbnail.Forfait.AnneeHijri H </h5>
.......
</div>
<!-- This div should contain the pop-up for every Product -->
<div class='pop-up' id='pop-up'> <h3>"@thumbnail.Forfait.Titre"</h3><p>"@thumbnail.Forfait.Description"</p></div>
</div>
</div>
}
</ul>
这是我糟糕的jquery函数,它只适用于一个产品,而不是列表中的所有产品
<script>
$('.thumbnail').each(function() {
$(this).hover(function (e) {
$('.pop-up').show()
.css('top', e.pageY + 20)
.css('left', e.pageX + 10)
.appendTo('body');
}, function () {
$('.pop-up').hide();
});
});
$('.thumbnail').each(function() {
$('.thumbnail').mousemove(function(e) {
$(".pop-up").css('top', e.pageY + 20).css('left', e.pageX + 10);
});
});
这个函数没有错误,但它只显示最后一个Product的弹出窗口,这似乎是合乎逻辑的,因为它无法识别指定Product的div。所以我的问题是,我如何实现我想要的功能(每个产品都有特殊的弹出窗口)?有什么想法吗?谢谢:)
我通过构建一个fiddle来更新这个答案,以显示一个有效的解决方案。在未来,你能在可能的情况下提供一个Fiddle吗,因为它为我们节省了很多时间,为自己建造一个。
这是我的JavaScript:
// Note, this is important
$(document).ready(function () {
// We don't need an each, and include the e event handler
$('.thumbnail').hover(function (e) {
$('#pop-up').show()
.css('top', e.pageY + 20)
.css('left', e.pageX + 10)
.appendTo('body');
}, function () {
$('#pop-up').hide();
});
$('.thumbnail').mousemove(function (e) {
$("#pop-up").css('top', e.pageY + 20).css('left', e.pageX + 10);
});
});
您还应该注意的是:您不需要在同一个元素上同时具有ID #pop-up
和类.popup
,除非这是从标准弹出式类继承的一些特殊弹出式。看起来您的ID/Class使用可能已关闭,所以只要确保在某个事物唯一时使用ID,在有多个实例时使用类即可。
我做了几个修复:
- Always将jQuery包装在
$(document).ready()
方法中,这将确保在应用事件之前已完全加载DOM - 您忘记在
hover
函数中包含一个事件处理程序,尽管我认为您已经更新了问题
您忘记在悬停事件上传递事件对象参数
//do this
...
$(this).hover(e){
--
}
...
希望这能奏效。
如果你注意到你使用了(e.pageX),那么(e)从哪里来。它必须作为参数传递
相关文章:
- 点击启动弹出事件未显示
- D3.js:如何在svg上移动鼠标时创建弹出事件
- 萨特利泽关闭弹出事件
- Kango 浏览器扩展开发中的鼠标悬停事件弹出窗口
- 角度指令:绑定'鼠标悬停'事件添加到元素
- 如何在鼠标悬停事件时触发引导弹出框
- 如何使用流的排出事件.在节点.js中可写
- 如何在高图表中查找鼠标出事件的系列名称
- jQuery列表中每个产品的基于悬停的弹出事件
- 无法抛出事件
- 是否可以使用AddEventListener为悬停/进入事件添加一个侦听器?
- 鼠标悬停和鼠标移出事件是否不匹配?
- 我如何触发多个悬停动作/事件
- 谷歌地图折线滑出事件
- 改变我的弹出q/答案事件从悬停到点击
- 鼠标悬停/出事件时奇怪的动画行为
- JavaScript对话框弹出事件等待OK被按下
- JQuery的可拉出事件不触发,有时可拖动与光标
- 弹出事件处理程序
- 鼠标悬停在事件上,光标指针位于行系列上