mouseenter和mouseleave不适用于jquery

时间:2013-03-16 17:08:44

标签: jquery jquery-hover mouseenter mouseleave

HTML code:

<body>
    <img class="card" src="card.jpg"/>
</body>

CSS代码

  

.card {position:static; margin-top:100px; margin-left:100px;     z-index:10; }

     

.cuad {opacity:0.3;边框:4px纯黑色;宽度:40px;高度:   40像素; z-index:5; }

jQuery代码

$(document).ready(function(e){
$(".card").mouseenter(function(e){
    $("body").append($("<div class='cuad'></div>").css({"position": "absolute", "top": (e.pageY-24)+"px", "left": (e.pageX-24)+"px"}));
});
$(".card").mouseleave(function(e){
    $(".cuad").remove();
});

});

这段代码的问题在于,在带有类.card的元素区域的入口处创建的div闪烁,因为自动调用函数mouseleave,最后它进入无限循环。 / p>

有没有人在代码中看到错误?

2 个答案:

答案 0 :(得分:2)

为什么不使用hover

$(document).ready(function(e){
    $(".card").hover(function(){
         //Add code for mouse enter
    },
    function(){
         // Add code for mouse leave
    });

});

答案 1 :(得分:0)

还有更多问题。每次都会重新创建元素。 更改.card和.cuav的z-Index。使.cuav更高,然后

试试这个:

$(document).ready(function(e) {
    var el = $("<div/>", {
                 class : 'cuad'
                });

$(".card").hover(function(e) {
                 $("body").append(el);
                 $(el).css({
                    position : "absolute",
                    top : e.pageY - 24,
                    left : e.pageX - 24

                 });

               }, function() {
                $(".cuad").remove(el);
         });
})