2011-12-07 5 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()の第2のパラメータは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

$('a.one').bind('click', {msg: message}, filter); 

を呼び出し、その後、あなたのフィルター機能では、あなたはevent.data.msg

function filter() { 
    .... 
    alert(event.data.msg); 
} 
を実行して、イベントデータを取得することができます

バインドイベントデータに関するjqueryバインドのドキュメントを確認してください。

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

関連する問題