1

次のコードで:

$('someelement').hover(
    function() {
        console.log('mouseenter begin');
        setTimeout(function() {
            console.log('mouseenter ends');
        }, 2000);
    },
    function() {
        console.log('mouseleave begin');
        setTimeout(function() {
            console.log('mouseleave ends');
        }, 2000);
    }
)

div に出入りすると(または 2 秒未満で 1 回)、コンソールに次のように表示されます。

mouseenter begin
mouseleave begin
mouseenter ends
mouseleave ends

終了時にのみ mouseleave を実行したいのですmouseenterが、方法がわかりません。

mouseenter begin
mouseenter ends
mouseleave begin
mouseleave ends
4

1 に答える 1

2

キューを作成できます...

http://jsfiddle.net/FHPGS/

var queue = []

$('someelement').hover(
    function() {
        queue.push('mouseenter begin');
        setTimeout(function() {
            var item = queue.shift();
            if (item)
                console.log(item)
            console.log('mouseenter ends');
        }, 2000);
    },
    function() {
        queue.push('mouseleave begin');
        setTimeout(function() {
            var item = queue.shift();
            if (item)
                console.log(item)
            console.log('mouseleave ends');
        }, 2000);
    }
)
于 2012-04-23T00:56:45.727 に答える