Javascript jQuery——我是怎么到这里的?

Javascript jQuery——我是怎么到这里的?,javascript,jquery,Javascript,Jquery,我必须使用某人的现有代码作为框架,并且我开发了一个现在需要使用的jQuery/JavaScript应用程序。如果从以下代码中调用,它可以正常工作,但是我需要从页面的其他地方传递nnn的值。因为我对jQuery结构了解不够,所以到目前为止我的努力都失败了 <script> $(function() { . . . var BuildTree = function(centralID) { ... } BuildTree(nnn); }); 谢谢 BuildTree

我必须使用某人的现有代码作为框架,并且我开发了一个现在需要使用的jQuery/JavaScript应用程序。如果从以下代码中调用,它可以正常工作,但是我需要从页面的其他地方传递
nnn
的值。因为我对jQuery结构了解不够,所以到目前为止我的努力都失败了

<script>
$(function() {
.
.
.
  var BuildTree = function(centralID) {
    ...
  }
  BuildTree(nnn);
});

谢谢

BuildTree函数的范围仅限于最外层函数的范围。只需将函数定义移到
$(function(){
函数之外

 var BuildTree = function(centralID) {
   ...
  }

$(function() {
  BuildTree(nnn);
});
BuildTree(nnn); // call it again.
$(function() {
  //anything defined in here will not be accessible outside of this jQuery function
  var foo = 'bar';
  var buildTree = function(centralId) {
  };
});

//this will be undefined since it was declared inside of the jQuery function
buildTree(1);
//this will also be undefined
console.log(foo);
两者之间没有(重大)区别

var FunctionA = function () {

}


Javascript具有函数作用域,这意味着在函数内部定义的变量在该函数外部是不可访问的。在jQuery函数内部声明的任何内容在函数外部都是不可访问的

 var BuildTree = function(centralID) {
   ...
  }

$(function() {
  BuildTree(nnn);
});
BuildTree(nnn); // call it again.
$(function() {
  //anything defined in here will not be accessible outside of this jQuery function
  var foo = 'bar';
  var buildTree = function(centralId) {
  };
});

//this will be undefined since it was declared inside of the jQuery function
buildTree(1);
//this will also be undefined
console.log(foo);

如果要访问buildTree函数,则需要在jQuery函数内部执行此操作。

如果buildTree只是一个函数,则不需要将其放入
$(function(){
)中。您应该能够执行以下操作:

 var BuildTree = function(centralID) {
   ...
  }

$(function() {
  BuildTree(nnn);
});
BuildTree(nnn); // call it again.
$(function() {
  //anything defined in here will not be accessible outside of this jQuery function
  var foo = 'bar';
  var buildTree = function(centralId) {
  };
});

//this will be undefined since it was declared inside of the jQuery function
buildTree(1);
//this will also be undefined
console.log(foo);
<script>
function BuildTree(centralId) {
    // do stuff
}
</script>

函数构建树(centralId){
//做事
}
现在,您应该能够从页面中的任何位置调用此函数。如果希望在DOM完成加载时调用BuildTree,只需执行以下操作:

<script>
$(function() {
    BuildTree(1234);
});
</script>

$(函数(){
BuildTree(1234);
});

如果作用域有问题,则在传递给jQuery的函数(本例中为$)的作用域内定义BuildTree

这是一个javascript方面的问题,没有jQuery,函数定义了一个作用域,这意味着你在函数中定义的东西存在于它里面

function test() {
    var variable = 2;    //variable within the scope of test
}
variable //undefined
因此,如果您需要在外部使用它,您可以在函数外部定义它,然后在内部使用它,或者执行以下操作:

function BuildTree(...) {
...
}
$(function(){
...
    window.BuildTree = BuildTree //global scope
...
});

还要注意caps,这意味着您正在定义一个构造函数,按照javascript标准

只需去掉var=part,并将其更改为function BuildTree(centralID){…}你需要更清楚地回答你的问题。事情是如何失败的?你期望发生什么?你尝试过什么?BuildTree是父函数中的一个函数/var。你不能从外部访问它。就像你不能从外部访问私有变量一样。查看jQuery插件。你需要花时间学习和理解它还有它们。你可以创建自己的选项并从外部设置它们。这很可能是你想要使用的。你想解决什么问题?你现在的BuildTree声明会很好地工作,因此不需要更改。你有什么问题?你在函数中声明BuildTree函数,并且只需要存在于它周围的函数范围内-因此,您不能从该函数外部调用它。谢谢。我后来在jQuery Pocket Reference中发现,这是jQuery应用程序的一种常见形式。在我的情况下,我可以按原样使用它,只需调用页面并在查询字符串中传递必要的ID。我仍然不知道如何使用它了解该格式(函数中的函数)的用途,但我会继续。该特定模式背后的想法是,您将处理程序传递给jQuery,以便它可以在页面加载时执行它。这与:
$(document.ready(handler)
(此处有更多信息)是一样的。在其他情况下,需要声明命名空间,例如: