2015-01-09 3 views
0

jquery 이벤트 함수에서 값을 얻을 수 있습니까?jquery 이벤트 함수에서 변수 값을 반환하는 방법은 무엇입니까?

function Init() { 
    var my_variable = $some_object.click(function() { 
     var my_variable = 'value'; 
     return my_variable // I need to get the variable value from click event 
          // but I don't know ways to do it 
    }); 

    console.log(my_variable); // I want to have possibility to use the value here 
} 
+1

당신이 할 수있는 이벤트 처리기에서 아무 것도 반환하지 않습니다. 값을보고 싶으면 핸들러 안에'console.log'를 넣으십시오. –

+1

'$ some_object'를 클릭하기 전에'Init()'함수는 오래 전에 사라질 것입니다. 이 일을 어떻게 상상하겠습니까? – JLRishe

+0

이벤트 핸들러의 값을 사용하는 패턴이 있습니다. 좋은 대답을 얻으려면 코드의 전반적인 목표를 설명해야합니다. 'Mister Epic'의 답변은 처리기 외부에서 값을 사용하는 실제적인 방법이 아니므로 따라야합니다. –

답변

1

번호

이벤트 핸들러가 실행되기 전에 이벤트 핸들러가 실행이 완료됩니다 설정하는 기능 :

나는 이런 식으로 뭔가를 얻으려면.

+0

짧고 요점. 어쨌든 답을 +1하는 것보다 더 많은 코멘트이기 때문에 어떻게하는지에 대한 긍정적 인 예가 좋을 것입니다. –

1

아니요, 그렇게 할 수 없습니다. 핸들러 범위 밖에 정의 된 변수의 값만 캡처 할 수 있습니다.

function Init() { 
    var my_variable = ''; 

    $some_object.click(function() { 
     my_variable = 'value'; 
    }); 

    console.log(my_variable); //Prints empty string 

    $some_object.trigger('click'); 

    console.log(my_variable); //Prints 'value' 
} 
+0

오우, 죄송합니다, * 손바닥 *, 작업이 끝나는 날 .. 감사)) – AlexAstanin

+0

이 예제는 이벤트 외부의 값을 사용하는 올바른 방법임을 의미합니다. 그건 사실이 아니야. 값을 사용하는 올바른 방법은 이벤트 처리기 * 내부에서만 * 있다는 설명을 추가해야합니다. –

0

질문에 대한 대답은 No!입니다. 이벤트 핸들러에서 값을 리턴 할 수 없습니다. 다음 호기심을 유발 한 것은 이벤트 처리기 자체에서 오는 데이터를 얻는 방법입니다. 여기에서 이벤트 전파가 이루어지며 일부 데이터가 전달됩니다.

버튼 클릭 이벤트 핸들러에서 생성 된 데이터가 맞춤 설정 용도로 전달되는 방법을 보여주는 피들 아래의 Checkout.

http://jsfiddle.net/kowmwq9j/

다음은 간단한 HTML과 이해 자바 스크립트 코드의 개념을 이해하는 일을 도울 수있는 공유

<div id='parent'> 
    <button id='test'>CLick</button> 
</div> 

var a=document.getElementById('test'); 
a.addEventListener('click', function(){ 
    var str='sample'; 
    //creating a custom event with name 'build' and passing object as data 
    var event = new CustomEvent('build', { 'detail': str }); 
    //dispatches the event which invokes the affected listeners 
    this.dispatchEvent(event); 
}) 

//Listening for 'build' event 
document.getElementById('parent').addEventListener('build', getData, true); 

function getData(e){ 
    alert(e.detail); 
} 

링크입니다. dispatchEvent & createCustomEvent. 귀하의 질문에 답변하는 데 도움이되는 희망! & 기능을 인식하지 못하는 사람들에게 도움이되는 몇 가지 의견을 & 개 추가했습니다. 내가 질문을 이해한다면 아마도 당신이 뭔가를 할 수

+0

원시 javascript 길이가 더 긴 간단한 jQuery 문제를 설명해서는 안됩니다. –

+0

글쎄요 .. 조언 해 주셔서 감사합니다. 그러나 나는 주어진 코드가 더 길다는 것을 진지하게 생각하지 않으며 jQuery를 이해하는 사람은 의심스러운 것을 찾을 것입니다. –

+0

코드가 크기와 복잡성이 두 배이기 때문에 방어 방법을 잘 모르겠다 * "하지만 심각하게 생각하면 주어진 코드가 더 길다"* : –

0

...

변수 = 5 그것으로 뭔가의 가치가 ...
마지막 기능은 사용이 함수 내에서 사용되는 ... 각 함수가 첫 번째 2 함수의 합계 및 다시 뭔가를 않습니다.
그래서 요점은 2 합계 변수에 액세스 할 수 있으며 세 번째 함수에서 사용할 수 있습니다 ...
만큼 글로벌으로 함수 변수를 설정 ... 그래서 그것 앞에 VAR을 두지 마십시오.
당신은 유 ....

변경 원래 변수의 값과 모든 값 변경 ... 당신의 변수는 그 함수에 대한 개인 것을 말하는 그것의 앞에 VAR을 설정하면

 variable = 5;     // this is a global variable 
    source = $('div#een h2');  // put your source here 

    function Init(){ 
     source.on('click', function(){ 
      Total1 = variable * 2; 

      console.log(Total1); // It outputs 10 
     }); 
    }; 

    Init(); 

    function Init2(){ 
    source.on('click', function() { 
      Total2 = variable * 5; 

      console.log(Total2); // It outputs 25 
     }); 
    }; 

    Init2(); 

    function Init3(){ 
     source.on('click', function() { 
      Total3 = Total1 * Total2; // here we use the 2 Totals... 

      console.log(Total3); // outputs the Total of both totals... should be 250 
     }); 
    }; 

    Init3(); 
관련 문제