mr3i
80
2019-06-14 12:30:58
4
285

click 이벤트를 연속적으로 수행할 때 그 과정이 어떻게 되는지 아시는 분 계신가요?


클릭을 여러번 했을 때 먼저 실행중인 이벤트가 끝나기 전에는 뒤에 있는 이벤트를 실행하지 않도록 하고싶은데,

중복클릭이나 이런 식으로 검색을 하니 form submit 중복 방지 요정도는 나오는데 이런 방법으로는 잘 안됐습니다.

어떤 요소에 on('click', function()~) 로 이벤트를 설정하고 함수안에서 로직 앞뒤로 임의 변수에 클릭 하면 true, 로직 수행 후에는 false로 바뀌도록 할당을 해봤는데도 제 의도대로 실행이 안되고,..

하나의 요소에 클릭 이벤트가 연속적으로 실행 될 때 이 이벤트들이 순서대로 실행되는게 아니라 각각 실행되는걸까요? 스레드 방식 처럼..?

어떤 식으로 접근을 해야할지 모르겠습니다. 아시는분 계시면 도와주세요. ㅜㅜ

0
0
  • 답변 4

  • 더미
    14k
    2019-06-14 13:04:44

    off 쓰면 됩니다

    0
  • mr3i
    80
    2019-06-14 13:38:53

    더미 off를 어디서 써야하나요? 

    document.on('click', 'selector', function() {

    document.off('click', 'selector'); 

    ~~~

    });

    이렇게 구현하는 거라면 다시 이벤트 바인딩 할때는 어떻게 처리해야할까요?

    0
  • 야근냥
    84
    2019-06-14 15:31:52

    이벤트가 정의되서 바인드 되면 이벤트 핸들러를 통해 제어됩니다. 모든 이벤트의 이벤트는 화면이 로드되면서 바인드된 이벤트를통해 제어됩니다.


    처리방법은 여러가지 있을수가 있겠으나

    1. dim 처리를 통해 해당 이벤트 처리되기 전까지 다른 외부입력을 막으시는 방법

    2. 해당 버튼 클릭시 해당버튼  disabled처리후 비니지스 로직이 끝나면 disbled 해제

    3. 해당 버튼 클릭시 해당버튼  visibled = false 처리후 비니지스 로직이 끝나면 visibled = true로 변경

    4. 서버단에서 중복클릭시 방지.

    (전자정부 프레임워크에서 지원하는 것으로 써봤는데 방식은 해당 화면의 유니크한 키를 가지고 있다가 해당 키를 가지고 중복으로 들어오는 데이터를 걸러내는 방식이었습니다.)


    정확히 어떠한 로직이나 요구사항이있는지 판단하시고 구현하시면될것 같습니다.

    0
  • mr3i
    80
    2019-06-17 16:57:33
    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.