1

altタグに「メタデータ」が格納されたスパンのリストがあります。ユーザーがスパンを1秒間ホバーすると、altタグ情報が別の要素に追加されて読み取られます。

私の問題は、いくつかのスパンをすばやくスクロールすると、スクリプトが複数回起動することです。したがって、setTimeout()は無意味です。なぜなら、それらはすべて最終的に起動し、1秒間ホバーされたものだけではなく、それらすべてのaltが追加されるからです。

var target;
$("#LIST span").live('hover', function(){
    target = $(this);
    setTimeout(function() {
        getALT = target.attr('alt');
        $(document).showALT();
    }, 1000);
});

jQuery.fn.showALT = function(){
    $("#tell2").append('X ')
    $(".Show_Info").attr('src', getALT);
}

上記は明らかに欠陥があり、上記のように理由はわかっています。自分のやりたいことをどうやって達成するのかわからない。

4

1 に答える 1

3

使用する前にクリアしてください。

var target;
var timeO;
$("#LIST span").live('hover', function(){
    target = $(this);
    clearTimeout(timeO);
    timeO = setTimeout(function() {
        getALT = target.attr('alt');
        $(document).showALT();
    }, 1000);
});

jQuery.fn.showALT = function(){
    $("#tell2").append('X ')
    $(".Show_Info").attr('src', getALT);
}

PS:次function showALT(){の代わりに次のものも使用できます:jQuery.fn.showALT = function(){

PS2:jQ 7+を使用する場合、.live()メソッドは非推奨になります。.on()代わりに次のように使用します。

$("#LIST").on('hover','span', function(){

于 2012-04-22T23:07:57.497 に答える