所以我的HTML中包含一个.js文件

如果我将其放在.js文件中,

$(document).ready(function(){
      var siteRoot = $('.site-root').val();
      alert(siteRoot);
});

该代码将正确警告该值,但是如果我这样做:
var siteRoot = $('.site-root').val();
$(document).ready(function(){
      alert(siteRoot);
});

它会提醒未定义

有没有办法在$(document).ready()中访问外部变量,因为如果我将变量放在$(document).ready()中,则其他js文件将无法访问该变量

最佳答案

您可以将其设置为全局:

// this is the same as your example,
// just wanted to stress that it's a part of the window (global) object
window.siteRoot = $('.site-root').val();
$(document).ready(function(){
      alert(window.siteRoot);
});

甚至更好的是,使用某种命名空间,例如:
var MyData = {};
MyData.siteRoot = $('.site-root').val();

$(document).ready(function(){
  alert(MyData.siteRoot);
});

07-24 09:30