首先,让我明确一点,我在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));
有谁愿意帮我实现这一目标吗?
您只是想在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
中做什么逻辑取决于你。
附言:这并不是一个真正的jQuery .extend()
场景;更重要的是,扩展您的代码场景。