Java 当我使用jquery在jqgrid中执行一个操作时,有几个调用
我的页面中有一个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
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 </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 </span><span class="edit2" idperson="' + items[i].id + '">EDITOK2</span></div>' : '<div><span class="editnook1" idperson="' + items[i].id + '">EDITNOOK1</span></div>';