当我使用jquery在jqgrid中执行一个动作时,几次调用

时间:2013-07-23 05:27:04

标签: java jquery jqgrid

我的页面中有一个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&nbsp;&nbsp;</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之间确定。

1 个答案:

答案 0 :(得分:1)

我想您多次拨打$('.edit').live('click', this.clickedit); 。这就是为什么this.clickedit处理程序将被更多地调用一次的原因。

我建议您不要使用this.clickedit回调的任何显式绑定。您可以使用beforeSelectRowonCellSelect代替。有关相应的代码示例,请参阅the answerthis one