2011-03-17 3 views
4

JQuery와 트리거 방법을 사용하여 이벤트 핸들러에 개체를 전달하는 코드를 다음 이벤트 처리기에 개체를 전달합니다 JQuery와는 : 작동하지 않습니다

$('a.another').live('click', function(e, data) { 
     alert(data); // **alerts '[{isMachineClick:true}]'** 
     alert(data.isMachineClick); // **alerts 'undefined'** 
}); 

$('a.another').trigger('click', "[{isMachineClick:true}]"); 

이에서 참조하시기 바랍니다.

PS : 링크 pass an object through jquery trigger에 제공된 솔루션이 작동하지 않으므로 새로운 스레드를 게시하십시오.

답변

6

문자열 만 전달하면 문자열 안의 JSON은 객체가 아니라 배열입니다. 이 시도 :

$('a.another').live('click', function(e, data) { 
    alert(data[0].isMachineClick); 
}); 

$('a.another').trigger('click', [{isMachineClick:true}]); 

UPDATE이 어떻게 작동하는지 몰랐 : 배열을 사용하여 정확하고, 각 추가 항목은 또 다른 인자가된다. 올바른 코드는 다음과 같습니다.

$('a.another').live('click', function(e, data, data2) { 

    alert(data.isMachineClick); 

    alert(data2.someOtherThing); 
}); 

$('a.another').trigger('click', [{isMachineClick:true}, {someOtherThing:false}]); 
+0

안녕하세요. 나는 당신의 코드를 테스트했지만 아무런 경고도 나오지 않았다. 그것을 확인하십시오. 이벤트 처리기에 배열, 객체 및 JSON을 전달하는 방법을 보여주는 예제를 가르쳐 주시면 정말 감사하겠습니다. – Arjun

+0

가장 최근 버전의 jQuery (적어도 1.x)에서는 .live() 메서드를 .bind()로 바꿀 수 있습니까? –