Jquery 仅在mouseover(或mouseout)上执行代码的最佳实践
我想在悬停元素时执行代码。当指针离开时,我不希望任何事情发生。这段代码正是我想要的:Jquery 仅在mouseover(或mouseout)上执行代码的最佳实践,jquery,hover,mouseover,mouseout,Jquery,Hover,Mouseover,Mouseout,我想在悬停元素时执行代码。当指针离开时,我不希望任何事情发生。这段代码正是我想要的: $('li').hover(function() { // actions here }, function() { }); $('ul').hover(function() { }, function() { // other actions here }); 但是很难看。我希望这个更干净的版本能够工作: $('li').mouseover(function() { // actions he
$('li').hover(function() {
// actions here
},
function() {
});
$('ul').hover(function() {
},
function() {
// other actions here
});
但是很难看。我希望这个更干净的版本能够工作:
$('li').mouseover(function() {
// actions here
});
$('ul').mouseout(function() {
// other actions here
});
但事实并非如此。鼠标悬停部分在我将指针移到元素上时持续触发,而不是触发一次
有什么建议吗?您可以使用鼠标指针,而不是您可能想使用的鼠标指针 像这样的方法应该会奏效: $'ul'。关于'mouseover','li',函数{ 控制台。日志“悬停”; }; 当我将指针移到元素上时,鼠标悬停部分会持续启动, 而不是开火一次 您可以使用一个标志只执行一次代码块,但是,这并不能阻止事件多次重新触发,它只会忽略第一次之后的事件
var flag = true;
$('li').mouseover(function() {
if(flag){
// actions here
flag = false;
}
});
尽管如此,我还是建议调查一下
片段
列表项
列表项
列表项
列表项
列表项
var标志=真;
$'li'.mouseoverfunction{
伊夫拉格{
控制台测试;
//这里的行动
flag=false;
}
};
$'ul'.mouseoutfunction{
//这里的其他行动
};
在您输入的li中添加活动类…离开ul时删除所有活动类
使用标志并在第一次激发后将其设置为false。当悬停任何li元素时,我会显示与每个li元素关联的背景图像。当鼠标悬停在整个列表之外时,我想切换回默认的背景图像。在li元素之间悬停时,我不想切换到默认图像。
$('li').mouseenter(function(){
$(this).addClass('active');
});
$('ul').mouseleave(function(){
$(this).find('.active').removeClass('active');
})