javascript - 点击时改变图像,有mouseenter()方法和mouseleave()

标签 javascript jquery html css

在标记中有图标图像。

$('.classSelection').find('.funcName').on({
        mouseenter: function (e) {
            var dataTarget = e.currentTarget.dataset.target;
            var imgHover =  ('//dustfade.com/img/' + dataTarget + '_hover_ico.png');
            $('.classSelection').find('.'+ dataTarget + '_ico').find('img').attr('src',imgHover);
        },
        mouseleave: function (e) {
            //stuff to do on mouse leave
            var dataTarget = e.currentTarget.dataset.target;
            var imgName = ('//dustfade.com/img/' + dataTarget + 'hover_ico.png');
            $('.classSelection').find('.'+ dataTarget + '_ico').find('img').attr('src',imgName);
        },
        click: function (e) {
        //stuff to do on mouse leave
        var dataTarget = e.currentTarget.dataset.target;
        var imgName = ('//dustfade.com/img/' + dataTarget + '_ico.png');
        $('.classSelection').find('.'+ dataTarget + '_ico').find('img').attr('src',imgName);
        },

    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="funcName assault_ico" data-target="assault">
            <img src="http://via.placeholder.com/75x75" width="75" height="75">
            <p>
                Assault
            </p>
        </div>
        <div class="funcName medic_ico" data-target="medic">
            <img src="http://via.placeholder.com/75x75" width="75" height="75">
            <p>
                Medic
            </p>
        </div>

使用 mouseenter() 方法,图标图像被替换为更亮的版本。
通过mouseleave()方法,图标图片被替换成原来的样子。

当我单击 () 时,我需要禁用将图像替换为原始图像 我不知道如何正确地做到这一点。

最佳答案

既然你说如果点击不同的图标你需要回到正常状态,我认为最好的办法是使用点击处理程序添加一个名为 clicked 的类,然后在其他处理程序中测试它。

$('.classSelection').find('.funcName').on({
        mouseenter: function (e) {
            var dataTarget = e.currentTarget.dataset.target;
            var imgHover =  ('//dustfade.com/img/' + dataTarget + '_hover_ico.png');
            $('.classSelection').find('.'+ dataTarget + '_ico').not('.clicked').find('img').attr('src',imgHover);
        },
        mouseleave: function (e) {
            //stuff to do on mouse leave
            var dataTarget = e.currentTarget.dataset.target;
            var imgName = ('//dustfade.com/img/' + dataTarget + 'hover_ico.png');
            $('.classSelection').find('.'+ dataTarget + '_ico').not('.clicked').find('img').attr('src',imgName);
        },
        click: function (e) {
            var dataTarget = e.currentTarget.dataset.target;
            $('.classSelection').find('.'+ dataTarget + '_ico').trigger('mouseenter').addClass('clicked').siblings().removeClass('clicked').trigger('mouseleave'));
        },

    });

关于javascript - 点击时改变图像,有mouseenter()方法和mouseleave(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49927706/

相关文章:

javascript - jQuery 动画剩余时间

javascript - 设置页眉和页脚 rev​​eal.js 演示

使用计时器的 Javascript 幻灯片放映

javascript - 尝试实现 momentjs 以显示本地时间

javascript - 正则表达式 - 将用户输入限制为 0-128

javascript - 如何解析具有复杂嵌套和未命名数组的分页 JSON API 响应?

javascript - 将 Unicode "name"与 JavaScript 正则表达式匹配

jquery 选择器在 load() 之后停止工作

javascript - .html() 添加的输入框值不取alert值

css - 响应页面不工作