我的页面中有一个jqgrid组件,并且使用值和操作创建网格行,例如:
colum: name adresss job edit
row 1: jorge my adress architect [value]
我使用数据库中的多行填充网格,并且aech行在列编辑中具有用于编辑操作的个人页面的值。
此值具有以下结构:
<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控制器,可以从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之间确定。
答案 0 :(得分:1)
我想您多次拨打$('.edit').live('click', this.clickedit);
。这就是为什么this.clickedit
处理程序将被更多地调用一次的原因。
我建议您不要使用this.clickedit
回调的任何显式绑定。您可以使用beforeSelectRow
或onCellSelect
代替。有关相应的代码示例,请参阅the answer和this one。