我在很多帖子中已经阅读了很多关于这个问题的内容。我发现的最好的是 在这里: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);
等
答案 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]);
}
}
}