jQuery:基于内联条件添加内联函数调用...是否可能?

时间:2012-09-23 01:57:43

标签: javascript jquery datatables

我过去从未真正遇到过这种情况,所以我很好奇。你能以某种方式做到以下几点吗?

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

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

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

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

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

2 个答案:

答案 0 :(得分: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; };

所以现在如果EnableInlineEditfalsemakeEditable是一个除了返回jQuery对象之外什么都不做的函数,所以链接可以继续。

答案 1 :(得分:1)

你不能只做这样的事情:

var oTable = var oTable = $("#example").dataTable();
if (whatever) {
    oTable.makeEditable();
}