【问题标题】:Call jQuery inside function from another js file从另一个 js 文件调用 jQuery 内部函数
【发布时间】:2018-03-20 08:04:29
【问题描述】:

我正在处理 wordpress 模板,其中有一个 script.js 文件,如下所示

script.js

var jQuery=jQuery.noConflict();
jQuery(document).ready(function() {

//while window loads
var obj = document.getElementById("centreFrame");
var comObj = document.getElementById("communityFrame");


var side1 = document.getElementById("t3-sidebar-1");
var side2 = document.getElementById("t3-content");

  function getUrlParameter(name, url) {
      if (!url) url = window.location.href;
      name = name.replace(/[\[\]]/g, "\\$&");
      var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
          results = regex.exec(url);
      if (!results) return null;
      if (!results[2]) return '';
      return decodeURIComponent(results[2].replace(/\+/g, " "));
  }
});

现在有另一个脚本文件“main.js”,我想在其中调用getUrlParameter(a,b) 函数。

ma​​in.js

window.onscroll = function() {
  //here I need to call getUrlParameter function 
}

如何在这个 onscroll 函数中调用“getUrlParameter”函数?

注意:首先加载 script.js,然后加载 main.js,而且我没有使用任何捆绑工具。如果我在文档就绪之外编写此函数,则它不能在文档就绪函数内部使用。

【问题讨论】:

  • 你打电话了吗?你遇到了什么问题?确保在main.js之前添加script.js
  • 如果你没有使用像webpack这样的捆绑工具,你的getUrlParameter应该是一个全局函数并且应该在main.js中可用。如果您是,您可以创建一个 util 并将其放到全局范围内,或者创建一个模块并使用 import
  • 未使用任何捆绑工具但未调用
  • @KushalJain 你没有回答我的评论
  • 我已经编辑了我的问题。在 main.js 中,window.onscroll 函数内部需要调用 getParamterUrl 函数但不能调用。 scriptjs 先加载,然后 main.js 加载。 @AlivetoDie

标签: javascript jquery function scripting


【解决方案1】:

确保您在 html 中包含两个脚本文件,如下所示,并确保顺序如下所示

<script type="text/javascript" src="main.js" ></script>
<script type="text/javascript" src="script.js" ></script>

将函数移出 jQuery.document.ready 范围并尝试它是否适合您。

【讨论】:

    【解决方案2】:

    基本上你在文档准备好之后声明这个函数getUrlParameter你需要在文件加载时声明它所以你需要放置这个函数

    function getUrlParameter(name, url) {
        if (!url) url = window.location.href;
        name = name.replace(/[\[\]]/g, "\\$&");
        var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
        if (!results) return null;
        if (!results[2]) return '';
        return decodeURIComponent(results[2].replace(/\+/g, " "));
    

    } 在文档准备功能之外 这将解决您的问题。

    【讨论】:

    • 如果我这样做,那么我无法使用内部就绪功能
    • 如果你把它放在 ready 函数之外,那么它会被全局声明,这样你就可以在任何你想要的地方访问它
    猜你喜欢
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 2023-02-01
    • 1970-01-01
    • 2022-06-10
    相关资源
    最近更新 更多