2012-06-08 35 views
1
$("#div").click(function(){ 
$('#myselect').change(function() { 
    var names = []; 
    $('.checkbox input').each(function() { 
      if(this.value != ''){ 
       names.push(this.value); 
       } 
      }); 
    console.log(names); 
    }); 
}); 

我需要使用该函数外部的names才能在另一个函数上使用它。谁能告诉我该怎么做?如何获得函数外的数组?

$("#dropdown").change(function(){ 
    console.log(names); 
}); 

names是一个数组。

+0

你的其他功能是什么?你试图达到什么目的? –

+0

而你不能将数组移动到外部范围的原因是......?通过将它们放入同一个准备好的处理程序中来让它们共享相同的作用域,并且应该在就绪处理程序的顶部声明该数组。 – gdoron

+0

您将更改事件附加到click事件中,这意味着您首先必须单击#div元素,然后更改#myselect控件中用于填充数组的值。这真的是你想要的,因为你在变化事件中做的事情不取决于#div元素或#myselect控制吗? – Guffa

回答

1

你的意思是这样的:

请让我知道如果我错过了什么。

否则希望这有助于

代码

var names = []; // Move the name array to outer scope 

$("#div").click(function(){ 

    $('#myselect').change(function() { 

     $('.checkbox input').each(function() { 
      if(this.value != ''){ 
       names.push(this.value); 
      } 
     }); 
     console.log(names); 
    }); 

    alert(names); 
}); 
+0

我尝试了一个,但它不适合我...顺便说一句,谢谢你的回应! – vnpnlz

+0

不用担心布鲁夫,嗯它应该whorl,你可以轻弹你我的HTML我会让你**演示**? :) –

+0

我刚刚编辑我的代码上面...我想在其他事件上使用该var名称 – vnpnlz

3

定义 “名称” 之外的功能...

var names = []; 

    $('#myselect').change(function() { 

     $('.checkbox input').each(function() { 
       if(this.value != ''){ 
        names.push(this.value); 
        } 
       }); 
     console.log(names); 
     }); 
2

你应该从变化 - 调用其它功能事件处理器。定义数组之外的数组没有任何意义,它必然会发生该事件。

function gotNewNames(names) { 
    // do something every time the value changes 
} 

$("#div").click(function(){ 
    $('#myselect').change(function() { 
     var names = []; 
     $('.checkbox input').each(function() { 
      if(this.value != ''){ 
       names.push(this.value); 
      } 
     }); 
     gotNewNames(names); 
    }); 
}); 

如果您只需要能够在其他地方获取当前值,则应该在更高的范围内声明该变量,例如,在点击处理程序中:

$("#div").click(function(){ 
    var names; 
    $('#myselect').change(function() { 
     names = []; // don't forget to reset before filling 
     $('.checkbox input').each(function() { 
      if(this.value != ''){ 
       names.push(this.value); 
      } 
     }); 
    }); 
    $("#dropdown").change(function(){ 
     console.log(names); 
    }); 
}); 
+0

+1看起来像最简单的解决方案往往被遗忘(谈论功能参数)。 –