2011-12-07 58 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'); 

我怎樣才能使用綁定類似的結果?

回答

1

bind() documentation所示,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

爲什麼不這樣

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

檢查.bind()文檔傳遞事件數據:

.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); 
}); 

請檢查此thread已在Sstackoverflow上可用的詳細信息。

$(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