我正在使用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]
如何做到这一点?
答案 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
个元素。