2012-04-22 2 views
1

alt 태그에 '메타 데이터'가 저장되어 있으므로 스팬 목록이 있습니다. 사용자가 1 초 동안 스팬을 가리키면 alt 태그 정보가 다른 요소에 추가되어 읽을 수 있습니다.스크립트에서 여러 번 스크롤하는 것을 방지합니다.

내 문제는 여러 스팬을 빠르게 스크롤하면 스크립트가 여러 번 실행된다는 것입니다. 그래서 setTimeout()은 무의미하다. 왜냐하면 그것들은 모두 결국 불을 뿜기 때문에 나는 그 모든 alts를 추가한다.

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 –

관련 문제