3

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

这两个项目都按需要工作。我要做的是在单击 tr 时停止 .hover 函数的第二部分(在 mouseout 上),以便在打开 div 时它保持突出显示。我尝试在该函数上使用该类,但 99% 的时间,当我的鼠标仍在它上面时,它会疲倦地高亮它,因此当我的鼠标移开它时,它会将其渲染回正常的 lo-lite 状态。

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

这些函数看起来有点愚蠢,但在我的真实代码中,还有很多事情要做。所以,这些是动作的剥离部分。

.hover( function(){
$(this).removeClass('xhead'); $(this).addClass('headerhover'); } , function(){ $(this).removeClass('headerhover') $( this).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 类。否则,如果没有单击,则执行类交换以突出显示行。

4

1 回答 1

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在编写的代码中选择了 for hover,但您的 HTML 只有一个tr.xhead.

于 2013-01-30T20:44:01.253 回答