在JQGrid中编辑单元格属性

我是JQ网格的初学者。 在我的JQ网格中,我在列中添加了一个图像作为锚标记。 单击特定单元格我需要更改该单元格的图像。 我在列中添加了一个“clickableTitle”类,并尝试访问当前单元格:

$('.clickableTitle').live('click', function () { $(this).parents('table:first').getCell($(this).parents('tr:first').attr('id'), 'comment')); }); 

这给了我以下格式的锚标记,但我无法在运行时更改其图像源。

  

能否请您告诉我这是实现这一目标的最佳途径。 谢谢!!!

首先,您尝试使用的JavaScript库的名称: jqGrid 。 在文档或主要方面的任何地方,您都会找到以完全相同的forms书写的相同名称。

对你的主要问题。 看起来你可以使用onCellSelect回调来捕获图像上的click事件或只是单击某个单元格。 onCellSelect回调的e参数是事件对象 , e.target是被点击的元素。

该演示演示了如何使用它。

在此处输入图像描述

我用作锁的jQuery UI的初始背景图像。

 formatter: function () { return "" } 

单击图像会通过将元素上的类从"ui-icon-locked"更改为"ui-icon-unlocked"来更改图像:

 onCellSelect: function (rowid, iCol, cellcontent, e) { var $dest = $(e.target), $td = $dest.closest('td'); if ($td.hasClass("clickableTitle")) { if ($dest.hasClass("ui-icon-locked")) { $dest.removeClass("ui-icon-locked").addClass("ui-icon-unlocked"); } else { $dest.removeClass("ui-icon-unlocked").addClass("ui-icon-locked"); } } } 

如果您希望在使用而不是背景图像,则可以轻松更改代码。

@Oleg:感谢您的投入。 我确信urs是正确的方法,但由于现有实施的局限性,我不得不使用下面提到的解决方案。

 $('.clickableTitle').live('click', function () { $('body').css('cursor', 'wait'); var commentIconStat = $(this).parents('table:first').getCell($(this).parents('tr:first').attr('id'), 'comment'); //Turn read comment off if (commentIconStat.search(/iconCommentOn/i) > -1) { commentIconStat = commentIconStat.replace(/iconCommentOn/i, "iconCommentOff"); $(this).parents('table:first').setCell($(this).parents('tr:first').attr('id'), 'comment', commentIconStat, '') } $('body').css('cursor', 'default'); });