복붙노트

[JQUERY] 왜 페이지로드 즉시 클릭 이벤트 처리기 화재는 무엇입니까?

JQUERY

왜 페이지로드 즉시 클릭 이벤트 처리기 화재는 무엇입니까?

해결법


  1. 1.당신은 콜백과 같은 함수에 대한 참조, 함수 실행하지 않는 결과를 전달하려는 :

    당신은 콜백과 같은 함수에 대한 참조, 함수 실행하지 않는 결과를 전달하려는 :

    showDiv ()는 어떤 값을 반환 더 return 문을 사용하지 않은 경우, 정의되지 않은 반환됩니다.

    showDiv 실행되어야하는 함수에 대한 참조이다.

    이 작업을해야합니다 :

    $(document).ready(function(){
        $('a.test').bind("click", showDiv);
    });
    

    양자 택일로, 당신은 더 진보 된 기능을 수행하는 익명 함수를 사용할 수 있습니다 :

    ...bind('click', function(){
      foo.showDiv(a,b,c);
      ...more code...
    });
    

    어떤 상황에서 당신은 콜백과 같은 함수에서 반환하는 값을 사용할 수 있습니다 :

    function function foo(which)
    {
      function bar()
      {
        console.log('so very true');
      }
      function baz()
      {
        console.log('no way!');
      }
      return which ? bar : baz;
    }
    
    ...click( foo( fizz ) );
    

    이 예에서, 푸 소다를 사용하여 평가하고 click 이벤트에 대한 콜백으로 할당하는 함수를 반환합니다.


  2. 2.당신 같은 외모 직접이 기능 showDiv를 호출 (과 직접 바인딩 대신 클릭 핸들러에 showDiv ()의 리턴 결과를 결합하고 있습니다.

    당신 같은 외모 직접이 기능 showDiv를 호출 (과 직접 바인딩 대신 클릭 핸들러에 showDiv ()의 리턴 결과를 결합하고 있습니다.

    당신은 뭔가를 원하는

    $(document).ready(function() { $('a.test').bind("click", showDiv); });
    

  3. 3.아래의 라인을 사용합니다. 그 라인이 실행될 때 사업부 ()가 바로 함수를 호출합니다 보여줍니다.

    아래의 라인을 사용합니다. 그 라인이 실행될 때 사업부 ()가 바로 함수를 호출합니다 보여줍니다.

    $('a.test').bind("click", showDiv);
    

  4. 4.로 변경합니다. $ ( 'a.test') 바인드 (showDiv "을 클릭합니다"); (당신이 함수 참조를 전달하려는 때문에 showDiv 주위에 괄호를 넣어하지 않음).

    로 변경합니다. $ ( 'a.test') 바인드 (showDiv "을 클릭합니다"); (당신이 함수 참조를 전달하려는 때문에 showDiv 주위에 괄호를 넣어하지 않음).

  5. from https://stackoverflow.com/questions/7102413/why-does-click-event-handler-fire-immediately-upon-page-load by cc-by-sa and MIT license