我有以下脚本:
<script ... jquery-1.9.1.js"></script>
<script ... dataTables.js"></script>
<script ... columnFilter.js"></script>
columnFilter.js中存在以下代码:
(function ($) {
$.fn.columnFilter = function (options) {
//some code...
function _fnCreateCheckbox(oTable, aData) {
//some code...
}
};
})(jQuery);
我想要做的是用我自己的代码覆盖function _fnCreateCheckbox(oTable, aData)
。我是一个相当新的JavaScript,所以会很感激一个例子。
我尝试过简单地抓取上面的代码并将其添加到自己的<script>
标签中,但这不起作用。它完全阻止了columnFilter.js的工作(我猜这是预期的)。不确定还有什么可以尝试。
答案 0 :(得分:8)
function _fnCreateCheckbox(oTable, aData) {
仅存在于创建它的范围内,因为(function ($) {
创建了一个函数范围。你必须在那里编辑它。你无法在功能之外覆盖它。
编辑:相关说明
如果你对JS非常狡猾并且你试图让这个函数有时只做其他事情,你可以将一些额外的变量传递给你的columnFilter插件/函数调用,并在该函数中处理它们以做其他事情。我不知道什么是列过滤器,但是我们假装在一个这样的元素上调用它:
el.columnFilter({optionA: true, optionB: false});
如果您想根据自己可以做的某些数据做其他事情,
el.columnFilter({optionA: true, optionB: false, extraOption: true});
然后在您的脚本中,取决于整个脚本的功能:
$.fn.columnFilter = function (options) {
//some code...
if(options.extraOption){
function _fnCreateCheckbox(oTable, aData) {
//some default code...
}
} else {
function _fnCreateCheckbox(oTable, aData) {
//my other code...
}
}
};
这是一个粗略的例子,但只是为了显示你的选择。
答案 1 :(得分:2)
我想您从某个外部源导入columnFilter.js
文件。
一个选项可能是将columnFilter.js
文件复制到项目目录中,根据需要进行修改,然后从项目目录中导入。
答案 2 :(得分:1)
您可以通过重新分配原型来覆盖某个功能。但通常建议不要这样做。
var d = new Date();
alert(d.getFullYear()); // 2013
Date.prototype.getFullYear = function() { return "Full Year"; }
alert(d.getFullYear()); // "Full Year"