javascript - 将鼠标悬停在一个元素上会导致使用 jQuery 对其他元素产生悬停效果

标签 javascript jquery hover mouseleave

当我将鼠标悬停在元素上时,我必须创建带边框的效果,反之亦然。

我设法做到了,但问题是每次我将鼠标悬停在其中一个元素上时,我都会取消悬停在我悬停的元素上的效果。

当我将鼠标悬停在 id="12345img"上时会得到边框,而 id="12345a"会得到颜色效果。当我这样做时,反之亦然,它也有效,但这是我第一次将鼠标悬停在它上面。

这是代码。

<script type="text/javascript">
    $(document).ready(function () {

        $('.portfolioProject a').hover(function () {
            var idElement = this.id;
            $("#" + idElement.replace('a', '') + "img").css('border', '2px solid #cdfc5d');
            $("#" + idElement + "a").css('color', '#cdfc5d');
        });

        $('.portfolioProject a').mouseleave(function () {
            var idElement = this.id
            $("#" + idElement.replace('a', '') + "img").css('border', 'none');
            $("#" + idElement + "a").css('color', 'white');
        });

        $('.portfolioImage img').hover(function () {
            var idElement = this.id;
            $("#" + idElement.replace('img', '') + "a").css('color', '#cdfc5d');
            $("#" + idElement + "img").css('border', '2px solid #cdfc5d');
        });

        $('.portfolioImage img').mouseleave(function () {
            var idElement = this.id
            $("#" + idElement.replace('img', '') + "a").css('color', 'white');
            $("#" + idElement + "img").css('border', 'none');
        });
    });
</script>

我的问题是如何修复它以使其每次都能正常工作。

jsFiddle link

最佳答案

我认为你必须为鼠标悬停效果创建 CSS 类,然后你只需要在事件上切换类:

J查询:

$(document).ready(function () {
    $(".portfolioImageWrapper").on('mouseenter mouseleave', ".img", function () {
                  $(this).toggleClass('imgHover');
                  $("#" + (this.id).replace('img', '') + "a").toggleClass('imgHover');  
              });
        });

HTML:

<div class='portfolioProject'>
    <ul>
        <h2>
            <li>
    <a id='7a' href='#'> Link1</a>
            </li>
        </h2>
        <h2>
            <li>
                <a id='8a' href='#'> Link 2 </a>
            </li>
        </h2>
    </ul>
</div>
<div class='portfolioImageWrapper'>
    <div class='portfolioImage'><a href='#'><img class="img" src='#' alt='Image1' title='Image 1' id='7img' /></a></div><div class='portfolioImage'><a href='#'><img class="img" src='#' alt='Image 2' title='Image2' id='8img' /></a></div></div>

CSS:

    .imgHover
{
    border-style: dotted;
    border-width: 1px;
    color: red;
    text-decoration: none;
}​

jsfiddle

您当然可以为您的链接切换不同的 css 类。只需在 jquery 代码中修改它(在 toggleClass 函数中)并将该类添加到 css 部分

关于javascript - 将鼠标悬停在一个元素上会导致使用 jQuery 对其他元素产生悬停效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9499581/

相关文章:

javascript - 滚动到特定标签

javascript - 在 jquery 中向数字(如 123,456.78)添加逗号的最佳方法

css - 在 Chrome 中按下鼠标按钮时悬停样式无法应用

html - 大型菜单 div 不会悬停在 Internet Explorer 上嵌入的 YouTube 上

javascript - FullCalendar 拖动多个事件

javascript - Angular 5 与 Materialize CSS 绑定(bind)选择/选项

JavaScript:是否可以替换像 Array.prototype.indexOf 这样的函数?

jQuery Spinner 更改事件

javascript - 如何在上下文菜单中创建子菜单?

html - 与按钮不同的 anchor 标签