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是一个数组。

4

3 回答 3

3

在函数之外定义“名称”...

var names = [];

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

         $('.checkbox input').each(function() {
               if(this.value != ''){
                     names.push(this.value);
                    }
                 });
         console.log(names);
      });
于 2012-06-08T07:45:46.730 回答
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);
    });
});
于 2012-06-08T07:52:27.273 回答
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);
});
于 2012-06-08T07:44:36.543 回答