我希望在鼠标悬停在鼠标上时显示div并将其隐藏在鼠标外面

时间:2014-02-11 06:06:32

标签: jquery

我希望在鼠标悬停在鼠标上时显示div并将鼠标悬停在鼠标上

我喜欢这个,但它不能正常工作

$(".ad-item").hover(

    function () {
        var $this = $(this);
        var timer =
            setTimeout(function () {
                $this.children('.content').show();
            }, 500);
    },
    function () {
        clearTimeout(timer);
        $(this).children('.content').hide();
    }
);

4 个答案:

答案 0 :(得分:1)

我认为你需要这个。在这里检查工作代码。 http://jsfiddle.net/linkmanishgupta/cKRDH/

这是脚本: -

 var timer;
 $(document).ready(function () {
     $("div").hover(
     function () {
         timer = setTimeout(function () {
             $("div").children().hide();
         }, 500);
     }, function () {
         clearTimeout(timer);
         $("div").children().show();
     });
 });

希望这有帮助。

答案 1 :(得分:0)

你的鼠标输入fn不会工作,因为它无权访问timer,因为var在另一个函数内初始化。试试这个:

var timer;    

$(".ad-item").hover(

    function () {
        var $this = $(this);
        timer =
            setTimeout(function () {
                $this.children('.content').show();
            }, 500);
    },
    function () {
        clearTimeout(timer);
        $(this).children('.content').hide();
    }
);

答案 2 :(得分:0)

试试这个..

$(document).ready(function () {
    $(".ad-item").mouseover(function (e) {
        e.stopPropagation();
         $this.children('.content').show();
    });
    $(".ad-item").mouseout(function (e) {
        e.stopPropagation();
         $(this).children('.content').hide();
    })
});

答案 3 :(得分:0)

如果你想使用超时,那么timer变量必须是全局的:

$(document).ready(function(){
var timer
    $(".aditem").hover(
        function () {
            var $this = $(this);
            timer =
                setTimeout(function () {
                    $this.children('.content').fadeIn();
                }, 500);
        },
        function () {
            clearTimeout(timer);
            $(this).children('.content').hide();
        }
    );
});

但是在你的情况下你也可以避免使用计时器,如果你使用一些Jquery效果,如fadeIn和慢动画:

$(document).ready(function(){
    $(".aditem").hover(
        function () {
            var $this = $(this);
            $this.children('.content').fadeIn(1500);

        },
        function () {
            $(this).children('.content').hide();
        }
    );
});

Working Fiddle