jQuery$.each
のループでスコープの問題が発生しています。関数でグローバル変数を取得してループに設定するか、少なくとも何かを渡すにはどうすればよいですか?
var some_function = function() {
// false by default
var something = false;
$.each(array, function(key, val) {
if (val == 'something')
{
// even if one item evaluates true I need to check outside of the loop
something = true;
}
});
if (something == true)
{
// do something else, but always false
}
}
配列内のすべてのアイテムを評価する必要があるため、が 1 つだけの場合は true
、$.each
.
アップデート
$(document).ready(function () {
something();
$(':radio').trigger('change');
)};
さて、これが実際のコードです。一番下に'false'とアラートが表示され、次に'hello'と 2 回アラートが表示されます。まるで逆の順序になっているようです。
var something = function() {
var q_radios = {
'radio1' : 'radio1_selector',
'radio2' : 'radio2_selector',
};
var show_me = false;
$.each(q_radios, function(name, q_selector) {
$('input:radio[name=' + q_selector + ']').change(function() {
show_me = true;
alert('hello');
});
});
if (show_me == true)
{
alert('yes');
}
else
{
alert('false');
}
};