在jquery函数之外更改变量的值

时间:2017-07-13 07:31:44

标签: jquery

我有这个代码,我想迭代一些具有特定数据属性的输入字段:

<input type="checkbox" name="asdf4faef4are" checked data-something="1" onchange="check()">
<input type="checkbox" name="fgrea4g3agere" checked data-something="2" onchange="check()">

function check(){
  var dont
  $('input[data-something]').each(function(){
    if($(this).attr('checked')=="true"){
        dont=true
    }
  });
  alert(dont)
}

但变量dont未填充,因为它未在函数内设置。

如何将变量传输到外部全局范围?

我想检查用户是否取消选中所有输入字段。

更新:我发现了!如果我在没有引号的情况下将attr('checked')=="true"更改为attr('checked')==true,我的示例就已经很好了。但无论如何,你的答案是一个更优雅的解决方案。谢谢;)

3 个答案:

答案 0 :(得分:1)

这是工作代码。首先需要初始化变量,然后在单击/更改复选框时调用它。

刚看到以下声明并相应地对代码进行了更改。

  

我想检查用户是否取消选中所有输入字段。

function checkAndAlert() {
  if ($('.someclass:checked').length == $('.someclass').length) {
    console.log("All are checked.");
  } else if ($('.someclass:checked').length == 0) {
    console.log("None are checked.");
  }
}

$(".someclass").on('change', function() {
  checkAndAlert();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" class="someclass" name="asdf4faef4are" data-something="1">
<input type="checkbox" class="someclass" name="fgrea4g3agere" data-something="2">

答案 1 :(得分:1)

  

我想检查用户是否取消选中所有输入字段。

在这种情况下,您可以使用:checked选择器避免循环,并验证length属性是否为0。试试这个:

$('input[data-something]').change(function() {
  var noneChecked = $('input[data-something]:checked').length == 0;
  
  if (noneChecked)
    console.log('No items checked');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="asdf4faef4are" checked="true" data-something="1" />
<input type="checkbox" name="fgrea4g3agere" checked="true" data-something="2" />

答案 2 :(得分:0)

它可能会帮助你..!

$('[type=checkbox]').prop('checked', true)
function check(){
  var dont
    if($(this).prop('checked') == true){
    	$(this).prop('checked', false)
        dont = true;
    } else {
    	$(this).prop('checked', true)
    	dont = false;
    }
  alert(dont)
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="asdf4faef4are" data-something="1" onchange="check()">
<input type="checkbox" name="fgrea4g3agere" data-something="2" onchange="check()">