1

我过去从未真正遇到过这种情况,所以我很好奇。您能以某种方式执行以下操作吗?

我正在使用 Datatables jQuery 插件。这是我的基本电话:

var oTable = $("#example").dataTable();

我在一个名为 EnableInlineEdit 的类中有一个属性。如果是真的,我想添加一个函数调用内联:

var oTable = $("#example").dataTable().makeEditable();

这将使 jEditable 插件能够工作。我定期向 Datatable 插件添加了很多我没有包括在内的选项,因此只需制作一个条件 if/else 并创建两个单独的调用就不可能了。通过这样做,我会将大型文件的大小增加一倍。有没有办法以某种方式创建内联条件以将 .makeEditable 添加到 Datatable 初始化的末尾,而无需创建两个完全相同的代码副本,其中一个仅具有 .makeEditable() ?

4

2 回答 2

1

你不能做这样的事情:

var oTable = var oTable = $("#example").dataTable();
if (whatever) {
    oTable.makeEditable();
}
于 2012-09-23T02:51:42.777 回答
1

创建一个返回相关值的命名函数。

function getval() {
    return some.value; // the value that decides if .makeEditable should run
}

然后添加.filter对链的调用。

var oTable = $("#example").dataTable().filter(getval).makeEditable();

如果getval返回一个真值,.makeEditable()将被调用。否则不行。

如果您需要oTable引用原始元素,请添加.end()到链的末尾。

var oTable = $("#example").dataTable().filter(getval).makeEditable().end();

这可能是一个更好的解决方案。

只需包含.makeEditable()调用,如果EnableInlineEditfalse,则覆盖该函数(或视情况添加该函数)

if (EnableInlineEdit === false)
    jQuery.fn.makeEditable = function() { return this; };

所以现在 if EnableInlineEditisfalsemakeEditable一个函数,它什么都不做,只返回 jQuery 对象,因此链接可以继续。

于 2012-09-23T02:05:14.243 回答