2013-04-07 25 views
1

我使用這種方法多年,我不知道這是一個好主意。如果你想將數據傳遞給函數,你將如何繼續?jquery從表格行傳遞數據到函數

例如,傳遞一個字符串數據將jQuery .hover事件:

<table>... 

<tr class='my_row' id='uniqueid_param1_param2_param3'> 
    <td>Some value #1</td> 
    <td>Some value #2</td> 
    ... 
    <td>Some value #n</td> 
</tr> 

並在jQuery的:

$('.my_row').hover(function(){ 
    var param = $(this).attr('id').split('_'); 

    param[1]; // param1 
    param[2]; // param2 
    param[3]; // param3 
}); 

有優點和缺點,我不一一列舉,但我會寫出另一個例子如何正常人,或我認爲別人如何使用:

<table>... 

<tr class='my_row' 
     onmouseover="handle_param('param1', 'param2', 'param2');" 
     onmouseout="handle_param('param1', 'param2', 'param2');"> 
    <td>Some value #1</td> 
    <td>Some value #2</td> 
    ... 
    <td>Some value #n</td> 
</tr> 

A nd在js內:

function handle_param(param1, param2, param3){ 
    //... 
} 

我不喜歡這種方法,如果你有很多行,這不會是一個好的理念。

那麼,你如何繼續?如果你必須將數據傳遞給函數,你會怎麼做?

回答

1

我會使用完全有效的數據屬性自己:

<tr class='my_row' id='uniqueid' data-param1='param1' data-param2='param2'> 

JS

$('.my_row').on('mouseenter mouseleave', function() { 
    var param1 = $(this).data('param1'), 
     param2 = $(this).data('param2'); 

    ..... 
}); 
+0

在IE7它不工作。 – 2013-04-07 10:49:23

+0

它應該根據[堆棧溢出](http://stackoverflow.com/questions/7361356/how-to-get-data-attribute-in-ie-7)?? – adeneo 2013-04-07 10:53:02