2014-06-18 2 views
0

청취자가 on 인 매개 변수를 보낼 수 없습니다. 여기 내 코드는 다음과 같습니다'켜짐'수신기가있는 매개 변수를 보내는 방법은 무엇입니까?

$.each(this.elements, function(i,element){ 

      var tagName = $(element).prop('type').toUpperCase(); 

      switch(tagName) { 
       case "TEXT" : 
       case "TEXTAREA" : 
        $(element).on('focus input focusout', that.inputHandler, tagName); //not working 
       case "SELECT-ONE" : 
        $(element).on('change focusout', tagName, that.selectHandler); //not working 
       case "RADIO"  : 
       case "CHECKBOX" : 
        $(element).on('change focusout', tagName, that.changeHandler); 
      } 

     }); 

예 :

this.inputHandler = function (e,tagname) { 
      console.log(e,tagname); //i am getting error. how to fix this? 
     var val = $(this).val(); 
     this.errorHandler(val); 
    } 

이 하나가 나에게 올바른 방법으로하시기 바랍니다 제안 할 수 있습니다? 미리 감사드립니다.

+0

'var self = this'는 범위 참조를 암기하라고 선언합니까? –

+0

"그"를 정의하지 않았습니다! –

답변

1

문제는 tagName이 문자열 인 것 같습니다.이 경우 jQuery는 문자열을 데이터로 해석하는 대신 위임 된 이벤트 처리기로 가정합니다. 그래서 다음과 같은 이벤트 객체에서 태그 이름에 액세스 할 수 있습니다

$(element).on('change focusout', {tagName:tagName}, that.changeHandler); 

을 시도

event.data.tagName 

데모 : Fiddle

0

핸들러
형태 : Function (이벤트 eventObject)가
이벤트가 트리거 될 때 실행할 함수입니다. 브라우저가 이벤트를 트리거 또는 다른 자바 스크립트 jQuery의 .trigger() 메소드를 호출하면

jQuery를가 이벤트 객체, 그것을 분석하고 이벤트의 상태를 변경하는 데 사용할 수있는 핸들러를 전달합니다.

문서에서 제시했듯이 자체 정의 데이터를 처리기에 전달할 수 없습니다.

function myHandler(event) { 
    alert(event.data.foo); 
} 
$(element).on("click", { foo : "self-define-data" }, myHandler); 

대부분의 시간, 더 될 것이다 공식 문서를 읽을 다음 on 문서를 제시하지만,

.on(events [, selector ] [, data ], handler)

는이 방법 (공식 예)에 의해 자기 정의 데이터를 전달할 수 있습니다

도움이됩니다.

+0

는 @ArunPJohny 답장과 동일하게 나타납니다. 'tagName'을'foo'로 변경했다는 것을 제외하고) – NoobEditor

+0

가끔은 필자도 왜 중요한지 생각하는 것 같습니다. – lyfing

관련 문제