2011-12-07 4 views
0

가능한 중복 :
Passing parameters to click() & bind() event in jquery?추가 매개 변수 바인딩()

이 코드를 가지고는,

내가하고 싶은 것은
clickcount = 0; 

    function filter() { 

      $(this).siblings().unbind('click', filter); 
      $(this).siblings().css({opacity: '0.3'}, 800); 
      clickcount++; 

      if(clickcount == 2){ 
       $(this).siblings().bind('click', filter); 
       $(this).siblings().css({opacity: '1'}, 800); 
       clickcount =0; 
      } 


    } 

     $('a.one').bind('click', filter); 
     $('a.two').bind('click', filter); 
     $('a.three').bind('click', filter); 

의 매개 변수를 전달 '필터'기능을 사용하여 동적으로 데이터를 전달할 수 있습니다. 예를 들어

이 내가 PHP에서 그것을 할 거라고 방법은 다음과 같습니다 -

function test(var) { 
    return $var; 
} 

echo test('this is a variable'); 

가 어떻게 바인딩을 사용하여 유사한 결과를 얻을 수 있습니까? bind() documentation에 도시 된 바와 같이

답변

1

것은 bind() 번째 파라미터 event.data

function filter(e) { 
     // e.data.foo; etc 

     $(this).siblings().unbind('click', filter); 
     $(this).siblings().css({opacity: '0.3'}, 800); 
     clickcount++; 

     if(clickcount == 2){ 
       $(this).siblings().bind('click', filter); 
       $(this).siblings().css({opacity: '1'}, 800); 
       clickcount =0; 
     } 
} 

$('a.one').bind('click', { 
    blah: 1, 
    foo: 2 
}, filter); 

대안을 사용하여 이벤트 핸들러 내부에 접근 할 수있는 데이터의 임의의지도 일 수는 할 수;

$('a.one').bind('click', buildFilter(1, 2, 3)); 

function buildFilter(argA, argB, argC) { 
    return function (e) { 
    // Use argA, argB and argC 

    $(this).siblings().unbind('click', filter); 
    $(this).siblings().css({opacity: '0.3'}, 800); 
    clickcount++; 

    if(clickcount == 2){ 
     $(this).siblings().bind('click', filter); 
     $(this).siblings().css({opacity: '1'}, 800); 
     clickcount =0; 
    } 
    } 
} 
0

.bind() 문서에 이벤트 데이터를 전달하지이

$('a.one').bind('click', function() { 
    filter(aaa, bbb); 
}); 
0

확인 :

.bind(eventType [, eventData], handler(eventObject)) 

예 :이 방법을 수행 할 수 있습니다

var message = 'Spoon!'; 
$('#foo').bind('click', {msg: message}, function(event) { 
    alert(event.data.msg); 
}); 

:

commentbtn.bind('click', { id: '12', name: 'Chuck Norris' }, function(event) { 
    var data = event.data; 
    alert(data.id); 
    alert(data.name); 
}); 

자세한 내용은 Sstackoverflow에서 이미 제공되는 thread을 확인하십시오.

$(this).siblings().bind('click',{id:1, cost:20}, filter); 

function filter(event) 
{ 
alert(event.data.id); 
} 
0

당신은 함수에 이벤트 데이터를 전달 할 수 있어야한다 당신이 event.data.msg

function filter() { 
    .... 
    alert(event.data.msg); 
} 
를 수행하여 이벤트 데이터를 검색 할 수 있습니다, 필터 기능에서 다음
$('a.one').bind('click', {msg: message}, filter); 

를 호출

바인드 이벤트 데이터에 대한 jquery 바인드 문서를 확인하십시오.

http://api.jquery.com/bind/#passing-event-data