jquery - 无法通过 jQuery 设置输入检查 ="checked"

标签 jquery jquery-ui radio-button each

我有一个表,其行包含单选按钮组,如下所示:

<td class="usegsm">
  <input type="hidden" class="use-gsm" value='<%# DataBinder.Eval(Container.DataItem, "use_gsm") %>' />
  <input type="hidden" class="use-gsm-lineup" value='<%# DataBinder.Eval(Container.DataItem, "use_gsm_lineup") %>' />
  <input type="radio" id="radio1-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>" name="radio-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>" class="events-lineups" />
  <label for="radio1-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>">Events &amp; Lineups</label>
  <input type="radio" id="radio2-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>" name="radio-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>" class="events" />
  <label for="radio2-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>">Events</label>
  <input type="radio" id="radio3-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>" name="radio-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>" class="none" checked="checked" />
  <label for="radio3-<%# DataBinder.Eval(Container.DataItem, "MatchId") %>">None</label>
</td>

当页面加载时(在 document.ready 中),我根据上面的 input.use-gsminput.use- 值调用此函数来检查正确的单选按钮gsm-阵容:

function setGsmButtonStates() {
      $('td.usegsm').buttonset(); /* http://jqueryui.com/demos/button/#radio */
      $('td.usegsm').each(function(i) {
        var use_gsm = $(this).children('input.use-gsm').val();
        var use_gsm_lineup = $(this).children('input.use-gsm-lineup').val();

        if (use_gsm == 'Y' && use_gsm_lineup == 'Y') {
          $(this).children('input.events-lineups').attr('checked', true);
        }
        else if (use_gsm == 'Y' && use_gsm_lineup != 'Y') {
          $(this).children('input.events').attr('checked', true);
        }
        else {
          $(this).children('input.none').attr('checked', true);
        }

      });
    } 

出于某种原因,设置 .attr('checked',true) 甚至 .attr('checked','checked') 无效。

我是否错误地使用了 $.each().attr()

最佳答案

问题是因为buttonset隐藏了带有span元素的单选按钮。将对按钮集的调用移至 end 可以解决您的问题。

function setGsmButtonStates() { 
      $('td.usegsm').each(function(i) { 
        var use_gsm = $(this).children('input.use-gsm').val(); 
        var use_gsm_lineup = $(this).children('input.use-gsm-lineup').val(); 

        if (use_gsm == 'Y' && use_gsm_lineup == 'Y') { 
          $(this).children('input.events-lineups').attr('checked', true); 
        } 
        else if (use_gsm == 'Y' && use_gsm_lineup != 'Y') { 
          $(this).children('input.events').attr('checked', true); 
        } 
        else { 
          $(this).children('input.none').attr('checked', true); 
        } 

      }); 
            $('td.usegsm').buttonset(); /* http://jqueryui.com/demos/button/#radio */ 
    }

P.S:我假设您只会在页面加载期间调用此函数一次。

关于jquery - 无法通过 jQuery 设置输入检查 ="checked",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4474764/

相关文章:

javascript - 内容完成时停止无限滚动

javascript - 如何在没有额外库的情况下将 div 保存为图像?

angular - Ang2-bootstrap btnRadio 在 Angular 2 rc2 种子项目中。与 ngModel 的双向绑定(bind)已损坏?

checkbox - 标签、复选框和单选按钮

javascript - jquery 在单选按钮上的选择上应用 css 类

javascript - 外部 JS 文件在 HTML 页面中不起作用

javascript - 使用 Javascript 删除 div

javascript - 拖动时将助手保持在鼠标下方

javascript - 如何在 jquery 类 nth-child() 中更改颜色?

jquery - 如何DIV block 不减