jquery将数据从表行传递给函数

时间:2013-04-07 10:30:13

标签: 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>

在js中:

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

我不喜欢这种方法,如果你有很多行,这不是一个好的想法。

那么,你如何进行?如果必须将数据传递给函数,你将如何做?

1 个答案:

答案 0 :(得分: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');

   .....
});