2

我想将参数从 html onclick 事件传递给 onclick jquery 函数。

PHP中的html语句渲染

$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);
});
4

3 回答 3

6

你为什么不尝试其他方式

$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'));
});
于 2013-01-11T13:03:21.867 回答
3

您无法更改触发事件的方式,但您始终可以将这些参数作为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
});
于 2013-01-11T13:01:34.037 回答
0

最好使用 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'。

于 2013-01-11T13:14:30.867 回答