我可以简化许多$ .fn。使用javascript / jQuery调用?

时间:2012-07-27 16:11:02

标签: javascript jquery datatables

我正在使用数据表,建议将以下内容添加到我的代码中:

$.fn.dataTableExt.oStdClasses.sWrapper = 'no-margin last-child';
$.fn.dataTableExt.oStdClasses.sInfo = 'message no-margin';
$.fn.dataTableExt.oStdClasses.sLength = 'float-left';
$.fn.dataTableExt.oStdClasses.sFilter = 'float-right';
$.fn.dataTableExt.oStdClasses.sPaging = 'sub-hover paging_';
$.fn.dataTableExt.oStdClasses.sPagePrevEnabled = 'control-prev';
$.fn.dataTableExt.oStdClasses.sPagePrevDisabled = 'control-prev disabled';
$.fn.dataTableExt.oStdClasses.sPageNextEnabled = 'control-next';
$.fn.dataTableExt.oStdClasses.sPageNextDisabled = 'control-next disabled';
$.fn.dataTableExt.oStdClasses.sPageFirst = 'control-first';
$.fn.dataTableExt.oStdClasses.sPagePrevious = 'control-prev';
$.fn.dataTableExt.oStdClasses.sPageNext = 'control-next';
$.fn.dataTableExt.oStdClasses.sPageLast = 'control-last';

我不明白这种语法。有人可以解释它在做什么。还有一种方法可以组合所有这些行。前30列完全相同。

3 个答案:

答案 0 :(得分:7)

此代码正在向$.fn.dataTableExt添加属性(我相信您可以看到)。这些属性可能用作扩展的配置字符串,作为DRY模式的一部分,因此当需要更改常用值时,不必在十几个位置更改它。

使用$.extend

可能会改进此代码
$.extend($.fn.dataTableExt.oStdClasses, {
    sWrapper: 'no-margin last-child',
    sInfo: 'message no-margin',
    sLength: 'float-left',
    ...
});

答案 1 :(得分:1)

不完全是,但您可以将实例保存在变量中,然后使用更简单的基础引用它们:

var someObject = $.fn.dataTableExt.oStdClasses;
someObject.sWrapper = 'no-margin last-child';
someObject.sInfo = 'message no-margin';
someObject.sLength = 'float-left';
someObject.sFilter = 'float-right';
someObject.sPaging = 'sub-hover paging_';
someObject.sPagePrevEnabled = 'control-prev';
someObject.sPagePrevDisabled = 'control-prev disabled';
someObject.sPageNextEnabled = 'control-next';
someObject.sPageNextDisabled = 'control-next disabled';
someObject.sPageFirst = 'control-first';
someObject.sPagePrevious = 'control-prev';
someObject.sPageNext = 'control-next';
someObject.sPageLast = 'control-last';

答案 2 :(得分:1)

至少你可以这样做:

$.extend($.fn.dataTableExt.oStdClasses, {

  sWrapper: 'val',
  sInfo: 'val',
  ...

});