在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'); });