在我的MVC应用程序中,我有一个带有以下DOM的视图:
<div class="item">
Item Name
</div>
这些“项目div”是通过视图内的foreach循环生成的。我的目标是在鼠标移动事件中显示另一个“div”,它将为用户提供一些选项(例如,分享,删除等等)。对于“选项div”,我没有特定的设计。但我的问题是,最好的目标是什么?我应该在foreach循环中创建“item div”旁边的“options div”,并在鼠标移动时设置css中的可见性吗?我试过了,这确实伤害了性能。
PS:我有大约2000个“项目div”。
谢谢!
答案 0 :(得分:1)
您实际上不需要mousemove
,而是mouseover
和mouseout
。
mousemove
快速连续发射很多次,因为它会在每次鼠标移动时触发,即使鼠标停留在同一个元素上也是如此。因为听起来你只想设置显示或隐藏的内容取决于鼠标当前所在的元素,你可以使用鼠标悬停和鼠标移动来更有效地做 - 在鼠标悬停时显示相应的链接,并在mouseout上隐藏它们。 / p>
答案 1 :(得分:0)
好吧,您可以在悬停时添加选项...(类似于需要选项的时候添加它)
$('.item').hover(function(){
var options = $(this).find('.options');
if (options.length) { // check if option div is found
options.show(); // show the option found
} else { // if no option div found, create one then show it...
options = $('<div class="options"></div>').appendTo($(this));
}
}, function(){
$(this).find('.options').hide(); // on mouseout, hide option div...
});
嗯,这只是一个粗略的例子......
答案 2 :(得分:0)
这是一个棘手的问题,所以我只能给你一些建议。当你有2000个DOM元素需要每个事件时,它更多地关于优化。
希望有所帮助