如果已经有x个时间,如何激活mouseleave?

dez*_*man 0 javascript jquery

所以,我有这种情况,但是如果用户"mouseleave(s)"超过x时间,比如一秒,我只想做"做某事".我应该如何实现呢?

$("#someElement, #someOtherElement").mouseleave(function() {
   // Do something.
});
Run Code Online (Sandbox Code Playgroud)

后来我补充道:

    $('.popover3-test').popover({
        placement:'bottom',
        template: $('.popover2'),
        trigger: 'manual',

        }).mouseenter(function(e) {
        $(this).popover('show');

        $(".popover3-test, .popover2").each(function() {
            var t = null;

            $(this)
                .mouseleave(function() {
                    t = setTimeout(function() {
                        $('.popover2').hide();
                    }, 1000); // Or however many milliseconds
                })
                .mouseenter(function() {
                    if(t !== null)
                        clearTimeout(t);
                })
            ;
        });


});
Run Code Online (Sandbox Code Playgroud)

Ry-*_*Ry- 5

setTimeout 应该做的伎俩:

$("#someElement, #someOtherElement").each(function() {
    var t = null;

    $(this)
        .mouseleave(function() {
            t = setTimeout(function() {
                // Do something.
            }, 1000); // Or however many milliseconds
        })
        .mouseenter(function() {
            if(t !== null) {
                clearTimeout(t);
                t = null;
            }
        })
    ;
});
Run Code Online (Sandbox Code Playgroud)

编辑:如果你想要它可以工作,只需删除.each:

var t = null;

$("#someElement, #someOtherElement")
    .mouseleave(function() {
        t = setTimeout(function() {
            // Do something.
        }, 1000); // Or however many milliseconds
    })
    .mouseenter(function() {
        if(t !== null) {
            clearTimeout(t);
            t = null;
        }
    })
;
Run Code Online (Sandbox Code Playgroud)