想要添加onclick attr但不会触发click

时间:2014-08-04 19:40:17

标签: jquery javascript-events onclick click

我想将onclick属性添加到来自某些json的输入中。 json正在由数据表处理,但我觉得我缺乏理解与jquery而不是数据表有关。

来自json的未改变形式的输入是:

<input type="checkbox" name="unique-string-submit_payment" id="id_unique-string-submit_payment" />

我希望将输入更改为:

<input type="checkbox" name="unique-string-submit_payment" id="id_unique-string-submit_payment" onclick="performFunction('some info')" />

如果我更改后端代码以包含onclick,它可以完美地工作。但是,如果我尝试通过jquery更改输入,则在页面加载时“单击”该函数。以下是我尝试的一些事情:

$('#data-display tbody tr td input').on('click', performFunction('some info'));
$('#data-display tbody tr td input').attr('onclick', performFunction('some info'));
$('#data-display tbody tr td input').each(function(){
    $(this).attr('onclick', performFunction('some info'));
});

我在这里缺少什么?是不应该设置等待触发器的点击,而不是触发它?添加onclick实际上是一种触发事件的方法吗?

我可以修改后端,所以解决这个问题并不重要,但我知道我错过了什么。

1 个答案:

答案 0 :(得分:1)

简单!

$('#data-display tbody tr td input').on('click', performFunction('some info'));
$('#data-display tbody tr td input').attr('onclick', performFunction('some info'));

on和attr正在等待函数引用,但是,这样做,你现在正在调用performFunction。

如果您想解决问题,请用以下代码替换您的代码:

$('#data-display tbody tr td input').on('click', function() { performFunction('some info') });
$('#data-display tbody tr td input').attr('onclick', function() { performFunction('some info') });