首先,请允许我明确表示我在jQuery中并不擅长,所以我在这里请大家帮忙。
JS代码有很大一部分,我想以某种方式扩展。还请记住,我无法改变该部分的任何内容。我只能在原始文件下面的HTML中插入另一个JS文件,它必须在原始JS文件中扩展一个方法。
因此,最初的JS文件(因为它来自商业社区软件而瘫痪)是这样的:
var memberlist = {};
(function($){
memberlist = function($){
var currentOptions = {
//...
},
coreOptions = {},
//...
resultsCache = {};
//-------------------------------------
// PUBLIC METHODS
var init = function( url, defaultType ){
//...
},
getOption = function(option){
return currentOptions[ option ];
},
setOption = function( option, value ){
currentOptions[ option ] = value;
};
//-------------------------------------
// PRIVATE METHODS
var toggleType = function(e)
{
//...
},
// A DOZEN OTHER METHODS HERE
// THIS IS THE METHOD WHERE I NEED TO PLANT A DOZEN MORE IF CHECKS PREFERABLY IN THE BEGINNING OF THE METHOD
doAdvancedSearch = function(e){
//...
if( !$("#f_inc_secondary").is(':checked') )
{
vals['f_inc_secondary'] = 0;
}
//...
};
//-------------------------------------
// Make public methods public
return {
init: init,
getOption: getOption,
setOption: setOption
};
}($);
}(jQuery));
任何人都可以帮我实现这个目标吗?
答案 0 :(得分:0)
您是否只是想在doAdvancedSearch
中添加其他功能调用/功能?只需传递一组函数引用,遍历它们并在迭代时调用它们:
doAdvancedSearch = function(e, otherFunctionalityArray){
if( !$("#f_inc_secondary").is(':checked') )
{
vals['f_inc_secondary'] = 0;
}
$.each(otherFunctionalityArray, function(){
this();
});
};
// Function would be called by doAdvancedSearch(e, [func1, func2, func3...]);
您可以单独使用上述代码,只要您可以私下doAdvancedSearch
。如果您需要公开的话:
// Create a private member in your initial variable definitions
var currentOptions = {
//...
},
coreOptions = {},
//...
resultsCache = {},
additionalAdvancedSearchFunctions = [];
...
// Create another public method and make it public
addAdvancedSearch = function(newFunctions){
this.additionalAdvancedSearchFunctions = newFunctions;
}
...
//Adjust your method call
doAdvancedSearch(e, this.additionalAdvancedSearchFunctions);
请注意,我们不知道您计划在doAdvancedSearch
做什么逻辑。你计划在doAdvancedSearch
内做什么逻辑取决于你。
P.S。这不是一个jQuery .extend()
场景;更重要的是,扩展您的代码方案。