通过TD对象类过滤来设置只读列

时间:2014-05-19 13:45:19

标签: javascript jquery-datatables jquery-datatables-editor

我正在使用Datatables Plugin for JQuery的最新版本1.10.0,并且需要有一些列可编辑而有些列不可编辑。由于数据表不提供开箱即用的此功能并遵循here的指示,因此我在columns初始化/规范中添加了一个我用来检查的类readonly,例如

"drawCallback": function(settings) {
  var dt = this;
  $('tbody td[class != "readonly"]').editable("/@context/edit/do",

这有效,但它不足以满足我的需要,因为我需要在readonly作为类的子字符串出现时进行过滤,即还有其他类,例如readonly sorting_1。我尝试过以下但是失败了:

"drawCallback": function(settings) {
  var dt = this;
  $('tbody td[class.indexOf("readonly") == -1]').editable("/@context/edit/do",

有错误:

Error: Syntax error, unrecognized expression: tbody td[class.indexOf("readonly") == -1]

如何做到这一点?

1 个答案:

答案 0 :(得分:1)

您无法在选择器中使用JavaScript表达式。您想要的可能是jQuery的.filter()方法,它允许您传递一个函数,如果应该保留匹配元素集中的项,则返回true

使用它,您的代码可以像这样重写:

$('tbody td').filter(function(){
    return !$(this).hasClass('readonly')
}).editable("/@context/edit/do",

在过滤功能中,我检查<td>是否有类readonly,并通过反转此检查(使用!),每当函数返回false时它有这个类,导致删除&#34;只读&#34;列表中传递给<td>方法的editable个元素。