1

この問題については、多くのスレッドで多くのことを読みました。私が見つけた最高のものはここにあります: 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); 

4

2 に答える 2

1

idその特定の例では、すでに要素に出力しているため、おそらく を取得するのが最善の方法です。

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

そこにまだ配置していない場合は、属性idを使用できます。data-*

<?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);
});
于 2013-01-21T08:59:35.077 に答える
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]);
        }
    }
}

jsフィドル

于 2013-01-21T09:11:20.413 に答える