2012-01-04 15 views
2

variablecheckBoxClassesを現在の関数の外に渡そうとしています。変数を関数外に渡します。 JQuery

どうすればいいですか?別の可能性は、より多くのユーザーの要件に合わせ思わ.map機能を使用することです

var classes = new Array(); 
$(currentMap).find(':checkbox').filter(':checked').each(function() { 
    var b = $(this).attr('class').split(' '); 
    classes.push(b[0]); 
}); 
alert(classes); 

:あなたは結果を追加する配列を使用することができ

var checkBoxClasses; // "global" variable, outside function 

    $(currentMap).find(':checkbox').filter(':checked').each(function() { 
       var b = $(this).attr('class').split(' '); 
       checkBoxClasses = b[0]; 

      }); 

    alert(checkBoxClasses); 
+0

関数の外に変数を宣言します。 –

+0

[このjqueryループの外でこの変数にアクセスするにはどうすればよいですか?](http://stackoverflow.com/questions/5549312/how-do-i-access-this-variable-outside-of-this-jquery -loop) –

答えて

3

これは、JSの変数のスコープで発生します。 ex。 What is the scope of variables in JavaScript?

一般に、変数は定義されている範囲外では使用できません。

これがうまくいく理由です。お使いのバージョンで

var checkBoxClasses = []; 

    $(currentMap).find(':checkbox').filter(':checked').each(function() { 
     var b = $(this).attr('class').split(' '); 
     checkBoxClasses.push(b[0]); 
    }); 

    alert(checkBoxClasses); 

各ループ内の無名関数は、その関数内で定義された変数は、その関数の外に見えないことを意味します。

+0

+1プッシュは私が探していたものです。ありがとう! –

1

var classes = $(currentMap).find(':checkbox:checked').map(function() { 
    return $(this).attr('class').split(' ')[0]; 
}).toArray(); 
alert(classes); 
+1

この方法で、最後のチェックボックスのクラスのみを取得します。 –

3

:なぜ

$(currentMap).find(':checkbox').filter(':checked').each(function() { 
      var b = $(this).attr('class').split(' '); 
      var checkBoxClasses = b[0]; 

     }); 

     alert(checkBoxClasses); 
2

変数を関数スコープ外に宣言する必要があります。そうでない場合は、変数は無名関数に対してプライベートになります。

var checkBoxClasses; 
$(currentMap).find(':checkbox').filter(':checked').each(function() { 
    var b = $(this).attr('class').split(' '); 
    checkBoxClasses = b[0]; 
}); 

alert(checkBoxClasses); 

ただし、チェックボックスをループしているときは、このようにすると最後のチェックボックスだけが警告されます。すべてのチェックボックスにアラートを表示したい場合は、アラートをループ内に移動する必要があります。または、単一のアラートですべてのチェックボックスを警告する場合は、配列を使用するか、文字列を完全に置き換えるのではなく、新しいチェックボックスごとに拡張することができます。あなたがwindow.variable構文を使用する必要があります任意の範囲からグローバル変数を宣言するための

0

は:

$(currentMap).find(':checkbox').filter(':checked').each(function() { 
      var b = $(this).attr('class').split(' '); 
      window.checkBoxClasses = b[0]; 

}); 
関連する問題