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 に答える