jQuery - 我是怎么来到这里的?

时间:2011-12-01 18:29:06

标签: javascript jquery

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

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

我想做类似的事情:

function BuildTree(...) {
...
}

谢谢!

4 个答案:

答案 0 :(得分:1)

你有范围问题,你在你传递给jQuery的函数范围内定义了BuildTree(或者在这种情况下为$)。

这是一个javascript方面的问题,没有jQuery,函数定义了一个范围,它意味着你在一个函数内定义的东西就在它内部。

function test() {
    var variable = 2;    //variable within the scope of test
}
variable //undefined

所以,如果你需要在外面使用它,你可以在函数之外定义它,然后在里面使用它或做类似的事情:

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

同样要小心大写,这意味着你要通过javascript标准定义一个构造函数

答案 1 :(得分:0)

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

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

$(function() {
  BuildTree(nnn);
});
BuildTree(nnn); // call it again.

之间没有(主要)差异
var FunctionA = function () {

}

function FunctionA() {
}

答案 2 :(得分:0)

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

$(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函数内部执行此操作。

答案 3 :(得分:0)

如果BuildTree只是一个函数,则不需要将其放在$(function() {中。你应该能够做到这一点:

<script>
function BuildTree(centralId) {
    // do stuff
}
</script>

现在您应该可以从页面的任何位置调用此函数。如果您希望在DOM完成加载时调用BuildTree,请执行以下操作:

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