jQuery传递参数到函数

时间:2013-01-21 08:58:06

标签: jquery function parameters

我在很多帖子中已经阅读了很多关于这个问题的内容。我发现的最好的是 在这里:jQuery's .click - pass parameters to user function

 // say your selector and click handler looks something like this...
 $("some selector").click({param1: "Hello", param2: "World"}, cool_function);

 // in your function, just grab the event object and go crazy...
 function cool_function(event){
    alert(event.data.param1);
    alert(event.data.param2);
 }

我的问题是我想为参数分配动态值。不只是“你好”等。

例如我有这样的事情:

   <?php
   for($i=0;$i<5;$i++){
   ?>
   <input type="text" id="client_<?=$i?>"> 
   <?
   }
  ?>

如何重写jQuery来处理参数的不同值?例如0,1,2,3,4

显然,我不能做像

这样的事情
 $("#client_1").click({num:1}, cool_function);
 $("#client_2").click({num:2}, cool_function);
 $("#client_3").click({num:3}, cool_function); 

2 个答案:

答案 0 :(得分:1)

在那个具体的例子中,你最好只抓住id,因为你已经把它输出到了元素:

$("some selector").click(function() {
    var num = parseInt(this.id.replace(/\D/g, ""), 10);
    // Do something with `num`
});

如果您还没有放置id,可以使用data-* attribute

<?php
for($i=0;$i<5;$i++){
?>
<input type="text" data-num="<?=$i?>"> 
<?
}
?>

...然后在click处理程序中检索它:

$("some selector").click(function() {
    var num = parseInt($(this).attr("data-num"), 10);
    // Or
    var num = parseInt($(this).data("num"), 10);
});

答案 1 :(得分:1)

你去了:

$("#foo").click({param1: "Hello", param2: "World"}, onClick);

function onClick(event) {
    for (var param_name in event.data) {
        if (event.data.hasOwnProperty(param_name)) {
            alert('param_name = '+ event.data[param_name]);
        }
    }
}

jsFiddle