Java 当我使用jquery在jqgrid中执行一个操作时,有几个调用

Java 当我使用jquery在jqgrid中执行一个操作时,有几个调用,java,jquery,jqgrid,Java,Jquery,Jqgrid,我的页面中有一个jqgrid组件,网格的行是用值和操作创建的,例如: colum: name adresss job edit row 1: jorge my adress architect [value] 我用数据库中的几行填充网格,aech row在“编辑到个人页面”列中有一个值,用于编辑操作 此值具有以下结构: <div><span class="edit" idperson="' + it

我的页面中有一个jqgrid组件,网格的行是用值和操作创建的,例如:

colum:  name     adresss      job               edit

row 1:  jorge    my adress    architect        [value]
我用数据库中的几行填充网格,aech row在“编辑到个人页面”列中有一个值,用于编辑操作

此值具有以下结构:

<div><span class="edit" idperson="' + items[i].id + '">Edit</span></div>
其功能是:

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>'; 
var actions='editedOK'EDITOK1 EDITOK2':'EDITNOOK1';
如果actions=true,我在同一单元格“EDITOK1 EDITOK2”中看到;如果actions=false,我在该单元格“EDITNOOK1”中看到

所有这些动作都会将函数与不同的行为联系起来


如果使用onCellSelect,则可以确定何时点击EDITOK1、何时点击EDITOK2以及何时点击EDITNOOK1。更重要的是确定EDITOK1和EDITOK2之间的关系。

我想您调用
$('.edit').live('click',this.clickedit')多次。这就是为什么
出现这种情况的原因。clickedit
处理程序将被多次调用


我建议您不要使用此
的任何显式绑定。单击编辑
回调。相反,您可以在选择行之前使用
,或在选择单元格之前使用
。有关相应的代码示例,请参见和。

首先,当前版本的Jquery中不推荐使用
live()
,请改用`on()…关于您的问题,可能是因为您绑定事件的次数多于我开始使用onCellSelect时的次数。我现在的问题是:在1个单元格中,我这样放置了3个动作:var actions='editedOK'EDITOK1 EDITOK2':'EDITNOOK1';如果actions=true,我在同一单元格“EDITOK1 EDITOK2”中看到;如果actions=false,我在该单元格“EDITNOOK1”中看到。如何确定何时点击EDITOK1和何时点击Editok2请查看问题中的更新。非常感谢你的帮助answer@JorgeInfanteOsorio:我建议您最好使用
beforeSelectRow
作为
onCellSelect
,因为如果用户单击某些操作按钮,您可以从
beforeSelectRow
返回false并阻止选择行。现在回到你目前的主要问题。元素
e.target
是被单击元素的DOM(被单击的
)。由于单元格中有多个不同类的跨距,因此可以使用
$(e.target).hasClass(“edit1”)
$(e.target).hasClass(“editnook1”)
确定单击了哪个跨距。
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>';