【问题标题】:toggle class on hover and on click在悬停和单击时切换类
【发布时间】:2014-11-30 23:04:37
【问题描述】:

这是我的fiddle

我有一个显示“item-overlay”的点击功能(item),但我还想添加一个悬停以将 div 'item-overlay' 预览 100px 我添加了一个具有高度的 mouseenter 和 mouseleave 到我的当前代码,但这在点击时起作用?!这是我的点击功能 -

     }).on('click', '.item', function (e) {
    (".item click");
    if ($(this).closest('.timelineTile').hasClass("clicked")) {
        e.stopPropagation();
        $(this).siblings('.item-overlay').slideToggle('fast');


    }

以及我尝试做的一个例子 -

    }).on("mouseenter", ".item", function(e) {
    if ($(this).closest('.timelineTile').hasClass("clicked")) {
    e.stopPropagation();
     $(this).siblings('.item-overlay').height(100); }

    }).on("mouseleave", ".item", function(e) {
     if ($(this).closest('.timelineTile').hasClass("clicked")) {
    e.stopPropagation();
    $(this).siblings('.item-overlay').height(0); }

【问题讨论】:

    标签: javascript jquery hover height toggle


    【解决方案1】:

    问题是您的其他打开/关闭动画使用hideshow,这也改变了display 样式。

    试试这个 JSFiddle:http://jsfiddle.net/TrueBlueAussie/w4v01t46/3/

    }).on("mouseenter", ".item", function (e) {
        if ($(this).closest('.timelineTile').hasClass("clicked")) {
            e.stopPropagation();
            $(this).siblings('.item-overlay').css({display: "block"}).height(100);
        }
    }).on("mouseleave", ".item", function (e) {
        if ($(this).closest('.timelineTile').hasClass("clicked")) {
            e.stopPropagation();
            $(this).siblings('.item-overlay').hide().height('');
        }
    });
    

    注意事项:

    • height('') 会将高度 css 重置为继承(即没有值)。

    如果您希望在再次单击时重置高度,请使用slideToggle 调用进行设置:

    }).on('click', '.item', function (e) {
        (".item click");
        if ($(this).closest('.timelineTile').hasClass("clicked")) {
            e.stopPropagation();
            $(this).siblings('.item-overlay').height('').slideToggle('fast');
        }
    

    JSFiddle:http://jsfiddle.net/TrueBlueAussie/w4v01t46/5/

    【讨论】:

    • 然后在点击时再次添加高度(100px):(真的不知道该怎么做!
    • 已更新以清除点击时的高度。为了在第一次获得最佳结果,您需要提供预期行为的清晰描述,而不是您认为的特定错误:)
    • 太好了,谢谢你,唯一的事情是当你点击它时首先会切换,然后你必须再次点击才能显示完整的 div,然后如果你将鼠标移开,它就会一起运行:S
    • 如果你想让我为你做所有的工作,我每小时收费 60 英镑 :) 只需在 mouseleave 中检查你点击的类/标志等。
    猜你喜欢
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多