JQuery .trigger에서 매개 변수 전달


82

JQuery 트리거를 사용하고 있지만 내 상황에서 매개 변수를 전달하는 데 올바른 구문이 무엇인지 잘 모르겠습니다. 내가 전화를 거는 곳은 다음과 같습니다.

$('#'+controlName).trigger(event);

다음은 이벤트 바인딩을 수행하는 곳입니다.

$(window).on('onPartialRendered', onPartialRendered);

그리고 여기에 내 이벤트 핸들러가 있습니다.

var onPartialRendered = function () {

    .....
};

매개 변수를 전달하려고 할 때까지 모든 것이 잘 작동합니다. 내 예에 따라 올바른 방법은 무엇입니까?


예, there trigger (event, [ 'Param1', 'Param2']) 구문을 사용하여 매개 변수 전달을 시도했지만 성공하지 못했습니다
user517406

귀하는 onPartialRendered그 서명에 매개 변수가 없습니다. 이어야합니다 onPartialRendered = function(e, p1, p2).
Rocket Hazmat 2013 년

@ user517406 작동하지 않는 매개 변수를 어떻게 전달하려고 했습니까?
epascarello 2013 년

@ user517406 우리가 놀 수 있도록 jsfiddle.net에 일부 코드를 게시하십시오.
Edper 2013 년

답변:


151

첫 번째 매개 변수는 항상 이벤트 이름이있는 문자열이고 다음 매개 변수는 추가 데이터입니다.

.trigger('foo', [1, 2]);

.on('foo', function(event, one, two) { ... });

Rocket Hazmat에 대한 특별한 감사

예:

var controller = {
  listen: function (event, json, string) {}
};

$('body').trigger('this_works', [{data: [1, 2, 3]}, 'something']);

$('body').on('this_works', function (event, json, string) {
  controller.listen(event, json, string);
});

원격 부분 :

이런 식으로 사용하지 마십시오. 네트워크에서이 문제에 대한 많은 기사가 있습니다. 이것은 많은 시간이 걸리고 네트워크에서 불필요한 트래픽을 생성합니다. 다음과 같이 사용하십시오.

var template = $('#templates #example_template').detach();
var clone = template.clone();
clone.find('.some_field').val('new_data');
clone.attr('id', null);
$('table tbody').append(clone);

11
좀 빠지는. .trigger2 개의 인수 만 사용합니다. 매개 변수의 배열 (또는 객체)을 전달해야합니다.
Rocket Hazmat 2013 년

예제에서와 같이 이벤트 핸들러에서 이벤트 바인딩을 분리하려는 경우 올바른 구문은 무엇입니까?
user517406 2013 년

이 구문을 사용하면 작동하지 않는 구문 예제를 제공 할 수 있습니까? EVENT BINDING $ (window) .on ( 'onPartialRendered', onPartialRendered (p1, p2)); 이벤트 핸들러 var onPartialRendered = function (p1, p2) {...}
user517406

2
@ user517406 이것은 함수 참조를 이벤트 핸들러로 전달하는 완전히 잘못된 방법입니다. 함수를 정의하는 매개 변수를 추가하십시오 . var onPartialRendered = function (event,one,two) {
Kevin B

2
트리거를 다음과 같이 변경하면됩니다 : $ ( 'body'). trigger ({type : 'this_works', data : [1,2,3], message : 'something'}) ;. 핸들러는 여전히 그 안에 function (event)를 포함하고 event.data 및 event.message를 지정하여 매개 변수를 가져올 수 있습니다.
linnium 2014-06-09
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.