单击时停止悬停鼠标

时间:2013-01-30 19:46:30

标签: jquery

我在一个表格单元格上发生了2个事件。 1,简单的tr行荧光笔on .hover(on,off)和 2,onclick,它在它下方滑开一个div。

这两个项目都按预期工作。我想要做的是在单击tr时停止.hover函数的第二部分(在mouseout上)触发,以便在打开div时它保持高亮显示。我尝试在该功能上使用该类,但99%的时间,当我的鼠标仍然在它上面时,它会因为hilight而疲劳,因此当我的鼠标离开它时,它会使它恢复到正常的lo-lite状态。

那么,我如何通过.click()调用,停止一个单独的.hover调用的第二个函数部分来运行?

这些函数看起来有点愚蠢,但在我的实际代码中,还有很多事情要发生。所以,这些是行动中被删除的部分。

.hover(         函数(){
            $(本).removeClass( 'xhead');             $(本).addClass( 'headerhover');         }         ,         功能(){             $(本).removeClass( 'headerhover')             $(本).addClass( 'xhead');          }     );

和此:

function togglediv(id){
    $("#"+id).toggle("fast");
}

从以下方式调用:

function loadmenu(id){
    var divid = 'div_'+id+'_detail';
    togglediv(divid);
}

这是第二次致电:

$('.viewer').click(function(e) {        
    var id = e.target.id;                   
    loadmenu(id);           
    }
});

小提琴在工作中受阻......对不起,我不能让它变得更容易。

欣赏这些想法。

它的长短是在.vm点击,粘贴headerhover,杀死mouseout事件从返回到xhead类。否则,如果没有单击,请执行类交换以执行行突出显示。

1 个答案:

答案 0 :(得分:1)

简单的方法?在你的click中输入类似的内容:

$(this).data("sticky", true);

在你的悬停(鼠标输出部分)中检查它:

if (! $(this).data("sticky"))
{
    // proceed with hover mouseout code
}

确保您的选择器在各个事件中排列。在上面的代码中,它没有,因此您需要一个更复杂的选择器,如$(this).closest('.xhead').data("sticky", true); ,您可以在click本身上定义一个额外的.xhead事件只是为了处理这种交互(这个点击事件将通过,同时触发两者)。

另请注意,您在td.xhead的书面代码中选择了hover,但您的HTML只有tr.xhead