javascript - 在 4 个按钮之间移动并保持鼠标悬停

标签 javascript jquery html css

我已经看到了一些接近我想要的东西,但不确定如何实现我正在做的事情。

下面的代码一切正常,但现在被要求在单击每个按钮时使悬停保持在原位。我该怎么办呢?或者重新开始使用按钮而不是 div 更好?

这是一个jsfiddle(不知道为什么所有的div都显示在这里,只显示第一个,这是正确的)

按钮示例:

<div id="tab1" class="tab" style="height:50px; width:160px; background-color:#CCC; float:left;">
    <img src=".../images/landing/terms-coach.jpg"  onmouseover="this.src='.../images/landing/terms-coach-col-2.jpg'" onmouseout="this.src='.../images/landing/terms-coach.jpg'" />
</div>

https://jsfiddle.net/uqxdum1o/

最佳答案

我对标记和 JS 进行了一些修改,但我认为这段代码应该满足选项卡要求并删除一些内联 JS。

本质上,将事件图像 src 存储在每个选项卡按钮的属性中:

<div id="tab1" class="tab" style="..." 
    data-image-active="./images/button1-active.jpg"
    data-image="./images/button1.jpg">
    <img src="./images/button1.jpg" />
</div>

然后使用它在 JavaScript 中为每个选项卡按钮设置事件状态。我也将您当前的点击处理代码移至此每个循环中。

$(document).ready(function(){
    var $contents = $('.tab-content');
    $contents.slice(1).hide();
    $('.tab').each(function() {
        $(this).hover(function() {
                setButtonActive($(this));
            }, function() {
            if (!$(this).hasClass('active')) {
                setButtonInactive($(this));
            }
        });
        $(this).click(function() {
            resetAllButtons();
            setButtonActive($(this));
            $(this).addClass('active');

            var $target = $('#' + this.id + 'show').show();
            $contents.not($target).hide();
        })
    });
});

function setButtonActive(button) {
    var img = button.find('img'),
        imgSrc = button.attr('data-image-active');
    img.attr('src', imgSrc);
}
function setButtonInactive(button) {
    var img = button.find('img'),
        imgSrc = button.attr('data-image');
    img.attr('src', imgSrc);
}
function resetAllButtons() {
    $('.tab').removeClass('active').each(function() {
        setButtonInactive($(this));
    });
}

关于javascript - 在 4 个按钮之间移动并保持鼠标悬停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37541633/

相关文章:

javascript - 计算属性未在 aurelia 中更新

javascript - Dojo require - Firefox 上出现错误

jquery - 卡在 Jquery 脚本上

javascript - TypeAhead.js 和 Bloodhound 显示奇数​​个结果

javascript - 我如何更新 Facebook 页面的状态?

javascript - Popper.js react 包装器 - React.createElement : type is invalid

javascript - 在 div 中获取 span 的值

HTML。将具有子类的多个类分配给一个元素

javascript - 如何在渲染过程中选中复选框

html - 将伪元素::after与多行文本对齐