我的页面中有一个 jqgrid 组件,网格的行是使用值和操作创建的,例如:
colum: name adresss job edit
row 1: jorge my adress architect [value]
我用数据库中的几行填充网格,并且每行在个人页面的列编辑中都有一个值以进行编辑操作。
该值具有以下结构:
<div><span class="edit" idperson="' + items[i].id + '">Edit</span></div>
在同一个脚本中我放入了以下内容:
$('.edit').live('click', this.clickedit);
其功能是:
clickedit: function(){
$.ajax('person/personedit.htm', {
cache: false,
type : 'POST',
data : { idperson: $(this).attr('idperson')},
success : function(response){
//some actions.....
}
});
},
在我的 java 代码中,我有一个 spring Controller ,它从 jquery 接收此调用并执行某些操作。
第一次连续单击“编辑”操作时,一切正常,但在使用应用程序一段时间后,我发现单个编辑操作被调用了多次,因此 clickedit 函数执行了 2、3 或 4 次,并且我的 java 代码被点击的次数相同。
关于这个问题有什么想法吗???
更新:
我现在开始使用onCellSelect。但我有一个问题。在一个单元格中,我可以通过这种方式放置 3 个不同的操作:
var actions = 'editedOK ? '<div><span class="edit1" idperson="' + items[i].id + '" >EDITOK1 </span><span class="edit2" idperson="' + items[i].id + '">EDITOK2</span></div>' : '<div><span class="editnook1" idperson="' + items[i].id + '">EDITNOOK1</span></div>';
如果 actions = true 我在同一单元格“EDITOK1 EDITOK2”中看到,如果 actions = false 我在此单元格“EDITNOOK1”中看到
当我点击它时,每个操作都将函数与不同的行为相关联。
如果我使用 onCellSelect ,则可以确定何时点击 EDITOK1、何时点击 EDITOK2 以及何时点击 EDITNOOK1。更重要的是确定 EDITOK1 和 EDITOK2。
最佳答案
我想您调用了$('.edit').live('click', this.clickedit);
多次。这就是为什么 this.clickedit
处理程序会被多次调用的原因。
我建议您不要使用 this.clickedit
回调的任何显式绑定(bind)。相反,您可以使用 beforeSelectRow
或 onCellSelect
。请参阅the answer和 this one相应的代码示例。
关于java - 当我使用 jquery 在 jqgrid 中执行操作时,有几个调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17802083/