2012-04-22 13 views
1

altタグに 'meta-data'が格納されたスパンリストがあります。ユーザーがスパンを1秒間ホバーすると、altタグ情報が読み込まれる別の要素に追加されます。スクリプトの複数回のスクロールの防止

私の問題は、すばやく複数のスパンをスクロールすると、スクリプトが複数回発生することです。だから、setTimeout()は無意味です。それらはすべて最終的には発火し、そのすべてのアルツトが追加されます。

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); 
} 

上記に明らかに欠陥があり、私は上記の理由を知っています。私は自分が望むものを達成する方法がわからない。

答えて

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); 
} 

P.S:あなたも使用することができます:function showALT(){の代わりに:jQuery.fn.showALT = function(){

PS2:あなたは.live()方法は推奨されているよりもjQのを7+使用している場合。

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

+0

ありがとう:代わりのよう.on()使用してください!私はそれを行うことができるかどうかわからなかった。 1.7ヒントありがとう。それは今、完璧に動作します。 –

+0

@Jason本当にうれしいです。ありがとう。 +1 –

関連する問題