我有一个允许用户创建仪表板并向其添加小部件的工具。每个小部件都是加载到页面中的自己的JS文件。

为了使所有内容保持一致,我创建了一个名为load的函数,该函数在文档准备就绪时触发。

问题是,包含的每个其他模块都具有称为负载的相同功能,这会导致问题。

虽然我可以将函数名称更改为唯一的名称,但我想看看是否有可能将它们锁定在它们所在文件范围内的位置保持不变。

/*
Module Details: Department Links - A collection of links specific to the users department or selected department
*/

$(function() {

  // Define our moduleID
  var moduleID = 1;

  // Load our module
  load(moduleID, '', false);

  // Create a event for dropdown change
  $('body').on('select2-selecting', '#Department_' + moduleID, function (e) {
    // When the user picks a department, reload this module and fetch those department links.
    load(moduleID, e.val, true);
  });

});

/*
  Load the module
  @moduleID: required.
  @departmentID: if not passed, the SP will use the viewers departmentID.
  @reload: passed when changing the dropdown so we only render the new data and not the whole module
*/
function load(moduleID, departmentID, reload){

    ... Do other stuff here
}


我想我的问题是..在包含的各个js文件中,有多个名为load的函数,如何触发特定于其自己文件的那个?

最佳答案

@binariedMe是正确的。JavaScript中没有像文件作用域那样的东西。如果每个文件中都有单独的对象,则可以这样做,因此可以编写如下...

`Object.load = function (){
      // do stuff
 }`


您可以为要加载的每个模块调用object.load ... !!

关于javascript - 具有多种功能的jQuery范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38190057/

10-12 13:25