鼠标悬停动作只运行一次(how to)
mouseover action run just once (how to)
我想加载数据(通过ajax)在一个工具提示当鼠标在一个特定的区域。问题是,只要我的鼠标在该区域上,就会进行ajax调用。是否有任何方法,我可以使onmouseover (ajax调用)效果只发生一次?下面是代码:
$.post('calendar/event-details', {'eventId' :event.id},
function (data){
this.top = (ui.clientY + 15); this.left = (ui.clientX - 230);
$('body').append( '<div id="vtip">' + data + '</div>' );
$('div#vtip').css("top", this.top+"px").css("left", this.left+"px").fadeIn("slow");
$('div#vtip').css("position","absolute");
$('div#vtip').css("z-index", "+99");
})
与.one
:
$('element').one('mouseover', function() { /* ajax */ });
.one
将在处理程序执行后立即分离处理程序。因此,它不会再执行任何次数。
您可能希望将您的函数与onMouseEnter
事件挂钩,而不是onMouseOver
事件,以及与隐藏工具提示的onMouseLeave
事件挂钩的函数:
$('element').mouseenter(function() {
/* Make request, show tooltip */
});
$('element').mouseleave(function() {
/* Hide tooltip */
});
请注意,这些事件的纯JS版本仅适用于IE, jQuery模拟其他浏览器的行为
使用现代JS!
node.addEventListener("mouseover", function() {
// Load data here
}, {once : true});
文档,CanIUse
我知道这已经是一个很长的话题了,但是对于那些寻找一个简单的替代方案的人:
设置一个静态变量并检查最后使用的id。如果最后一个id是当前id,则不执行任何操作;下面的快速示例
var LastId = null;
function Hover(Id){
if(Id!= LastId){
LastId = Id;
$(Id).hide('fast');
}else{
//Do nothing; this will keep the function from recalling
}
}
我猜你需要使用onmouseenter
而不是onmouseover
请阅读此处的文档
相关文章:
- 每次鼠标悬停触发一次 jquery 效果
- 地图,rails 4.2,javascript,鼠标悬停,只工作一次(或两次).然后在重新加载之后
- 一次高亮显示一个城市,并在悬停其他城市时删除颜色填充
- jQuery悬停只工作一次
- 如何保持一次显示一个悬停
- 在鼠标悬停时添加事件,如何只添加一次事件
- 多个Google+圈子一次悬停不正确
- Iframe只在鼠标悬停时加载一次
- jQuery悬停动画期间的最后一次潜水闪烁
- 鼠标悬停只工作一次?JQuery
- JS悬停链接调用函数,但只有一次
- JS/jQuery -播放GIF只一次悬停
- 只洗牌一次悬停的单词
- jQuery子菜单不会消失,除非它被悬停一次
- 在悬停追加一次跨度
- Jquery加载页面获取另一个页面内容,鼠标悬停如何加载一次
- 鼠标悬停动作只运行一次(how to)
- jQuery为什么:悬停只工作一次
- 悬停时播放gif一次,鼠标悬停时反转播放
- 仅在悬停时获取和设置元素的高度和宽度一次