我想从html onclick事件传递参数给onclick jquery函数
html语句在PHP中呈现
$name = "abcd";
for ($i=0;$<10;$i++){
$text .= '<tr>
<td>'.$i.'</td>
<td><div id="name">'.$name.'/div>
<a class="href" onclick="callJSFunc($i,'''.$name.''')" ></a>
</td>
</tr>';
}
javascript…
function callJSFunc(i , name){
alert(i+" "+name);
}
我想把它转换成…
$(".href").click(function(i,name,event){
alert(i+" "+name);
});
你为什么不试试别的方法呢
$name = "abcd";
for ($i=0;$<10;$i++){
$text .= '<tr>
<td>'.$i.'</td>
<td><div id="name">'.$name.'/div>
<a class="href" data-id="'.$i.'" data-name="'.$name.'" ></a>
</td>
</tr>';
}
和jQuery中的onClick
$(".href").click(function(){
alert($(this).attr('data-id')+" "+$(this).attr('data-name'));
});
您不能更改事件触发的方式,但您始终可以将这些参数存储为标记中的data-*
属性,并在事件处理程序中提取它们。您所要求的是订阅事件和事件对象,使其根据您想要的参数自然地发生变化,但是浏览器没有办法知道您需要什么。
我使用data-*
属性的意思是将数据存储在DOM元素中:
<a class="href" data-index="$i" data-name="$name" href="someHref" />
jQuery: $('.href').click(function (event) {
var index = $(this).attr('data-index'); // Yields a string use data() for other data types
var name = $(this).attr('data-name'); // Yields a string use data() for other data types
});
最好使用jQuery,而不是使用PHP发送参数。
你可以在你的javascript中这样做:
$('a.href').click(function( event ) {
var index = $('table').index(this); // Containing table
var name = $(this).siblings('#name').innerHTML;
alert( index + ' ' + name );
});
顺便说一句,id应该是唯一的。您的代码生成了10行表,每一行的id都是'#name'。