首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的MouseOut一直在重复。我怎么才能阻止它?

我的MouseOut一直在重复。我怎么才能阻止它?
EN

Stack Overflow用户
提问于 2016-04-27 12:56:53
回答 2查看 55关注 0票数 1

我对Jquery比较陌生,所以如果我在解决这个相当简单的问题上遇到困难,请原谅。因此,我得到了一个任务,指定我应该专门使用MouseEnter和MouseOut函数编写翻转图像Jquery代码,用已经写入id属性的新图像src URL替换原始图像src URL。它还指定我应该保持原始的src URL在一个变量内使用later...so我这样做了…

这是我的HTML

代码语言:javascript
复制
<section>
    <h1>Ram Tap Combined Test</h1>
    <ul id="image_rollovers">
        <li><img src="images/h1.jpg" alt="" id="images/h4.jpg"></li>
        <li><img src="images/h2.jpg" alt="" id="images/h5.jpg"></li>
        <li><img src="images/h3.jpg" alt="" id="images/h6.jpg"></li>
    </ul>        
</section>

这是我的Jquery

代码语言:javascript
复制
$("#image_rollovers img").each(function() {
    var newSrc;
    var oldSrc;
    $("img").mouseenter(function(){
        oldSrc = $(this).attr("src");
        newSrc = $(this).attr("id");    
        $(this).stop().attr("src", newSrc);

    })  
    $("img").mouseout(function(){
        alert("moving out")
        alert(oldSrc);
        $(this).stop().attr("src", oldSrc);
    }); 
}); 

所以我这样做了,mouseenter函数工作得很好,但是mouseout会重复3次,当它完成时,图像不会恢复到原来的src。我似乎不明白它为什么要这样做。我尝试过使用stop(),但它没有停止重复的过程。任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

发布于 2016-04-27 13:01:49

所以问题是,当您迭代#image_rollovers img时,每次都会将mousout处理程序添加到每个图像标记中。因此,对于3个图像,您需要添加3次处理程序。我已经创建了一个具有正确解决方案的fiddle

基本上,您希望将您的循环更改为:

代码语言:javascript
复制
$("#image_rollovers img").each(function(i, e) {
    var elem = $(e);
    var newSrc;
    var oldSrc;
    elem.mouseenter(function(){
        oldSrc = $(this).attr("src");
        newSrc = $(this).attr("id");    
        $(this).stop().attr("src", newSrc);
    });  
    elem.mouseout(function(){
        alert("moving out")
        alert(oldSrc);
        $(this).stop().attr("src", oldSrc);
    }); 
});

这样做的目的是获取元素elem,并将mouseEntermouseOut处理程序分配给每个图像。

票数 1
EN

Stack Overflow用户

发布于 2016-04-27 13:02:30

使用mouseleave

代码语言:javascript
复制
$("img").mouseleave(function(){
        alert("moving out")
        alert(oldSrc);
        $(this).attr("src", oldSrc);
    }); 

不要在循环中绑定事件,请尝试以下操作

代码语言:javascript
复制
$("img").on('mouseenter mouseleave',function(){
        oldSrc = $(this).attr("src");
        newSrc = $(this).attr("id");    
        $(this).attr("src", newSrc);
         $(this).attr("id", oldSrc);

    });

https://jsfiddle.net/g1h3xwyq/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36880652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档