jQuery - 变量范围问题"分配的值永远不会被使用"

时间:2014-09-19 05:50:17

标签: javascript jquery

我正在尝试再次单击时取消选中单选按钮 以下代码仅适用于第一次取消选中。

lastChecked = null;语句中的

if发出“永远不会使用分配的值”的警告 我怀疑这是问题的原因,我无法弄清楚。

如何将此变量安排在正确的范围内?

var lastChecked = null;

$j('input[name=radio-group]:radio').click(function(){
    if (lastChecked == this) {
        this.checked = false;
        lastChecked = null;
    }
    lastChecked = this;
});

2 个答案:

答案 0 :(得分:1)

你应该使用else来分配值lastChecked = this;,否则lastChecked变量总是具有点击的单选按钮的值而永远不会为空

$j('input[name=radio-group]:radio').click(function(){
    if (lastChecked == this) {
        this.checked = false;
        lastChecked = null;
    }
    else
   {
    lastChecked = this;
    }
});

此外,不是将单选按钮指定给变量,而是为其指定单选按钮值。这将有助于您更好地调试脚本,例如发出警报并检查选择了哪个无线电等,请参阅下面的代码

$j('input[name=radio-group]:radio').click(function(){
  if (lastChecked == this.value) {
     this.checked = false;
     lastChecked = null;
   }
   else
   {
     lastChecked = this.value;
   }
});

答案 1 :(得分:1)

可能有多个单选按钮,但您只处理所有单个变量lastChecked

尝试使用.data()方法

    $('input[name=radio-group]:radio').click(function () {
    $('input[name=radio-group]:radio').not($(this)).data("lastChecked",false);
    if (!$(this).data("lastChecked")) {
        $(this).data("lastChecked", (this.checked = true))
    } else {
        $(this).data("lastChecked", (this.checked = false))
    }
});

DEMO