javascript - 单击链接后试图防止鼠标移出

标签 javascript jquery html mouseout

我有一个带有鼠标悬停和鼠标移开动画的导航。他们工作。我还有一个用于添加 CSS 类的点击监听器的语句。该类设置了一个 div 的高度,问题是 mouseout 也会改变这个 div。所以我想找出一种方法来在单击链接时禁用 mouseout 监听器。

我尝试解绑,但没有成功

js

var currentDiv;

function slideMenu(e) {

if(e.type === "mouseover"){
    // console.log("mouseover");
    TweenMax.to($(this).find('div') , 0.25, {height:20});
}
else if(e.type === "mouseout"){
    // console.log("mouseout");
    TweenMax.to($(this).find('div') , 0.25, {height:1});
}
else if(e.type === "click"){
    console.log("click");

    if (currentDiv !== undefined){
        $(currentDiv).removeClass("selected");
    }

    currentDiv = $(this).find('div');
    $(currentDiv).addClass("selected");

    $(currentDiv).unbind('mouseout'); // not working



}
}

$(".menu a").click(slideMenu);
$(".menu a").mouseover(slideMenu);
$(".menu a").mouseout(slideMenu);

CSS

.selected{
    height: 20px;
}

最佳答案

这会实现您的目标吗?不必担心单击事件的绑定(bind),您可以在单击事件中执行任何其他操作之前检查“选定”类。像下面这样...

var currentDiv;

function slideMenu(e) {

    if(e.type === "mouseover"){
        // console.log("mouseover");

        var child_div = $(this).find("div")

        if (!$(child_div).hasClass("selected")) {
            TweenMax.to($(this).find('div') , 0.25, {height:20});
        } else {
            $(child_div).attr("style", "") // remove inline styles attr, so that height is based on css instead of JS
        }
    }
    else if(e.type === "mouseout"){
        // console.log("mouseout");

        var child_div = $(this).find("div")
        if (!$(child_div).hasClass("selected")) { // check to see if selected/clicked on
            TweenMax.to($(this).find('div') , 0.25, {height:1})
        } else {
            $(child_div).attr("style", "") // remove inline styles attr, so that height is based on css instead of JS
        }
    }
    else if(e.type === "click"){
        console.log("click", this);

        if (currentDiv !== undefined){
                $(currentDiv).removeClass("selected");
        }

        currentDiv = $(this).find('div');

        $(currentDiv).addClass("selected");
    }
}

$(".menu a").click(slideMenu);
$(".menu a").mouseover(slideMenu);
$(".menu a").mouseout(slideMenu);

关于javascript - 单击链接后试图防止鼠标移出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44807641/

相关文章:

javascript - 移动折线图上的圆圈

javascript - 在页面加载时动态加载选择框

jquery - 如何在 jQuery 中单击相应按钮后向上或向下移动 li 项目?

javascript - 当用户向下滚动页面时显示隐藏的 div

javascript - Twitter Bootstrap - 如何在工具提示弹出窗口和元素之间添加更多边距

javascript - 如何将包含 "< >"个字符的文本作为纯文本插入到 TinyMCE 中,而不将其视为 HTML 标签

javascript - 在 div 中添加 <tr> <td> 且 Javascript 未显示在表格中

javascript - fadeslideshow 库的 jumpTO 功能不起作用

html - 基于表格的布局与基于 Div 的布局

javascript - Tinymce 文本颜色