jQuery의 .click을 사용하여 매개 변수가있는 함수를 호출하려고하는데 작동하지 않습니다.
이것이 내가 작동하는 방식입니다.
$('.leadtoscore').click(add_event('shot'));
어떤 전화
function add_event(event) {
blah blah blah }
다음과 같이 매개 변수를 사용하지 않으면 작동합니다.
$('.leadtoscore').click(add_event);
function add_event() {
blah blah blah }
그러나 매개 변수를 add_event
함수 에 전달할 수 있어야 합니다.
이 특정 작업을 어떻게 수행 할 수 있습니까?
사용할 수 있다는 것을 알고 .click(function() { blah }
있지만 add_event
여러 곳 에서 함수를 호출 하고이 방법을 원합니다.
답변
철저히하기 위해 jQuery 클릭 이벤트 핸들러 버전 1.4.3에 도입 된 기능의 일부인 다른 솔루션을 발견했습니다 .
jQuery가 첫 번째 매개 변수로 이벤트 핸들러 함수에 자동으로 피드백하는 이벤트 오브젝트에 데이터 맵을 전달할 수 있습니다. 데이터 맵은 .click()
첫 번째 매개 변수로 함수에 전달되고 이벤트 핸들러 함수가 이어집니다.
의미하는 바를 설명하는 코드는 다음과 같습니다.
// say your selector and click handler looks something like this...
$("some selector").click({param1: "Hello", param2: "World"}, cool_function);
// in your function, just grab the event object and go crazy...
function cool_function(event){
alert(event.data.param1);
alert(event.data.param2);
}
나는이 질문에 대한 게임에서 늦었 음을 알고 있지만 이전 답변 으로이 솔루션으로 이끌었으므로 누군가에게 도움이되기를 바랍니다.
답변
다음과 같은 익명 함수를 사용해야합니다.
$('.leadtoscore').click(function() {
add_event('shot')
});
예제 에서와 같이 매개 변수가 없는 함수 이름 만 호출 하면됩니다.
$('.leadtoscore').click(add_event);
그러나 add_event
메소드는 'shot'
매개 변수로 사용되지 않지만 click
콜백에 전달되는 것은 event
객체 자체입니다. 이 경우 적용 할 수 없지만 다른 많은 경우 에는 작동합니다. 매개 변수를 전달 해야하는 경우 익명 함수를 사용하십시오 … 또는 다른 옵션 .bind()
이 있습니다. 다음과 같이 데이터를 사용 하고 전달하십시오.
$('.leadtoscore').bind('click', { param: 'shot' }, add_event);
다음과 같이에 액세스하십시오 add_event
.
function add_event(event) {
//event.data.param == "shot", use as needed
}
답변
당신이 그랬던 것처럼 부르면 …
$('.leadtoscore').click(add_event('shot'));
… add_event()
과 같은 함수를 반환 해야합니다 …
function add_event(param) {
return function() {
// your code that does something with param
alert( param );
};
}
이 함수는의 인수로 반환되어 사용됩니다 .click()
.
답변
.on ()을 사용하여 성공했습니다.
$('.leadtoscore').on('click', {event_type: 'shot'}, add_event);
그런 다음 add_event
함수 내에서 다음 과 같이 ‘shot’에 액세스 할 수 있습니다.
event.data.event_type
자세한 내용은 다음 예제를 제공 하는 .on () 설명서 를 참조하십시오 .
function myHandler( event ) {
alert( event.data.foo );
}
$( "p" ).on( "click", { foo: "bar" }, myHandler );
답변
예, 이것은 오래된 게시물입니다. 어쨌든 누군가 유용하다고 생각할 수 있습니다. 다음은 이벤트 핸들러로 매개 변수를 보내는 다른 방법입니다.
//click handler
function add_event(event, paramA, paramB)
{
//do something with your parameters
alert(paramA ? 'paramA:' + paramA : '' + paramB ? ' paramB:' + paramB : '');
}
//bind handler to click event
$('.leadtoscore').click(add_event);
...
//once you've processed some data and know your parameters, trigger a click event.
//In this case, we will send 'myfirst' and 'mysecond' as parameters
$('.leadtoscore').trigger('click', {'myfirst', 'mysecond'});
//or use variables
var a = 'first',
b = 'second';
$('.leadtoscore').trigger('click', {a, b});
$('.leadtoscore').trigger('click', {a});
답변
$imgReload.data('self', $self);
$imgReload.click(function (e) {
var $p = $(this).data('self');
$p._reloadTable();
});
javascript 객체를 onclick 요소로 설정하십시오.
$imgReload.data('self', $self);
“this”요소에서 Object를 가져옵니다.
var $p = $(this).data('self');
답변
간단한 해결책을 얻습니다.
<button id="btn1" onclick="sendData(20)">ClickMe</button>
<script>
var id; // global variable
function sendData(valueId){
id = valueId;
}
$("#btn1").click(function(){
alert(id);
});
</script>
내 말은 값 onclick
이벤트를에 전달하고 javascript function sendData()
변수를 초기화 한 다음 jquery 이벤트 핸들러 메소드로 가져 오는 것입니다.
이것은 처음 sendData(valueid)
에 호출되어 값을 초기화하기 때문에 가능합니다. 그런 다음 jquery 이벤트가 실행 된 후 해당 값을 사용하십시오.
이것은 간단한 솔루션이며 For Detail 솔루션은 여기 로 이동하십시오 .