2017-01-02 3 views
0

사람들이 내 말씨를 오해하고 있기 때문에 마지막으로 발생한 경우 내 jquery에서 아래에 주석으로 표시된 함수를 무시하기 위해 "다음 코드를 사용하십시오" "X"초. 내 코드는 다음과 같습니다.x 초 이내에 발생한 경우 함수를 무시합니다.

편집 : 예를 들어 답을 적어주세요. "스크립트는 수업 시간의 변화를 무시하고 지연은 효과가 없습니다"http://www.w3schools.com/code/tryit.asp?filename=FBC4LK96GO6H

나 자신을 포함한 모든 사람을 혼란스럽게합니다.

+2

가능한 중복 플래그를 확인하기 위해 [가장 쉬운 방법은 무엇 호출 함수는 5 초마다 jQuery에서?] (http://stackoverflow.com/questions/2170923/whats-the-easiest-way-to-call-a-function-every-5-seconds-in-jquery) –

+0

@ FabianSchultz 내 질문과 관련이 없습니다. 완전히 다른. –

답변

2

작성자의 게시물 업데이트로 인해 편집되었습니다.

사용자 지정 이벤트를 만들 수 있습니다. 이 함수를 사용하면 선택한 객체에서 "delayedClick"이벤트를 정의합니다. 당신이 선택한 요소에 delayTime이 이벤트를 정의해야

function delayedClickable(selector, delayTime){ 
    $(document).ready(function(){ 
    $(selector).each(function() { 
     var lastTimeFired = 0; 
     $(this).click(function(){ 
     if(Date.now() - delayTime > lastTimeFired) { 
      lastTimeFired = Date.now(); 
      $(this).trigger('delayedClick'); 
     } 
     }); 
    }); 
    }); 
} 

Remeber :

var delayTime = 3 * 1000; // 3 sec delay between firing action 
delayedClickable('.Img2', delayTime); 

그리고 그냥 요소에 이벤트를 사용합니다. 예를 클릭에 대한 이벤트는 그런 식으로 사용할 수 있습니다

$element.on('click', function() { 
    // ... 
}); 

그리고 사용자 정의 delayedClick 이벤트가 그런 식으로 사용되어야한다 :

$element.on('delayedEvent', function() { 
    // ... 
}); 

전체 예 : http://www.w3schools.com/code/tryit.asp?filename=FBC56VJ9JCA5


@ 업데이트 클릭 기능을 계속 사용하는 또 다른 까다로운 방법을 발견하여 정상적으로 작동하게합니다.

function delayedClickable(selector, delayTime){ 
    $(document).ready(function(){ 
    $(selector).each(function() { 
     var scope = this; 
     $(this).click(function(){ 
     scope.style.pointerEvents = 'none'; 
     setTimeout(function() { 
      scope.style.pointerEvents = 'auto'; 
     }, delayTime); 
     }); 
    }); 
    }); 
} 

그리고 전부 다음

var delayTime = 3 * 1000; // 3 sec delay between firing action 
delayedClickable('.Img2', delayTime); 

.

두 번째 방법의 핵심은 클릭 할 때 요소에 대한 포인터 이벤트를 사용하지 않도록 설정 한 다음 시간 초과 후에 이러한 이벤트를 다시 작동하도록 만드는 것입니다. https://developer.mozilla.org/en/docs/Web/CSS/pointer-events

그리고 전체 예제 : http://www.w3schools.com/code/tryit.asp?filename=FBC678H21H5F

+0

그러나이 코드를 테스트 해 보도록하겠습니다. "if"와 "else if"에 추가 할 때 테스트와 잘 맞았습니다 –

+0

전체'$ (". element1")을 래핑하고자 할 수 있습니다.) {...}'function with this if (ofc가 함수 내부에 있다면 이것을 넣으십시오.) 이것을 시도해보십시오. (이전에는 if와 함께 빨간색으로 만 전환했습니다. 그러나 빨간색은 초기 값이므로 첫 번째 예제에서는 파란색에서 빨간색으로 지연 될 것입니다, 나는 당신이 의견을했기 때문에 파란색에서 빨간색으로 바뀌는 것을 지연시키기를 ​​원한다고 생각했습니다). 이것은 모든 클릭에 적용되는 버전입니다. http://codepen.io/anon/pen/LxPrGP –

+0

안녕하세요. 제 생각에는이 문제의 일부를 알아 냈습니다. 원래 게시물에는 쓰여지지 않았지만 이 모든 것이 스크립트로 본문에 추가됩니다. 추가 된 스크립트는 반복 될 때 무시됩니다. 당신이 주신 답안을 가지고 너무 많이 묻지 않는다면, 제가 그 모든 것을 몸에 어떻게 추가 할 수 있었는지 설명하고 여전히 기능을 발휘할 수 있습니까? –

1

이 플래그 변수를 변경하는 setTimeout()을 사용할 수 및 조건부 이벤트 핸들러에서의

var allowClick = true, 
    delaySeconds = 5; 
$(".element1").click(function(){ 
    if(!allowClick){ 
     return; // do nothing and don't proceed 
    } 
    allowClick = false; 
    setTimeout(function(){ 
     allowClick = true; 
    }, delaySeconds * 1000); 

    // other element operations 
}) 
+0

http://www.w3schools.com/code/tryit.asp?filename=FBC4LK96GO6H이 작업이 가능합니까? –

+0

왜 그렇게하지 않았습니까? 시도 했습니까? – charlietfl

+0

너 자신을 보아라. 나는 jquery와 모든 것에 상당히 익숙하다. 내가 가진 문제를 보았다면, 나는 더 잘 이해할 것이다. 나는 그것을 시도했지만 더 큰 문제는 jquery 내의 다른 것이라고 생각한다. –

관련 문제