2017-02-12 92 views
0

我遇到了一些代码的问题。如果单击一个单元格,我在每个单元格中都有一个单选按钮选项的表格。然后查找相反的集合,然后单击该集合。jquery单击单选按钮单击另一个

所有的工作都很好,除非当我点击集合中的第一个时,它不会点击相反的一个。

我已经在JSFiddle中设置了代码,将不胜感激任何帮助。

https://jsfiddle.net/mikeu/yx89h5nn/

<table> 
    <tr> 
    <td class="cb"> 
     <div class="btn-group" data-toggle="buttons" data-opposite-name="_S1"> 
     <label class="btn btn-xs"> 
      <input type="radio" name="_L1" value="a"> 
     </label> 
     <label class="btn btn-xs"> 
      <input type="radio" name="_L1" value="b"> 
     </label> 
     <label class="btn btn-xs"> 
      <input type="radio" name="_L1" value="c"> 
     </label> 
     </div> 
    </td> 
    <td class="cb"> 
     <div class="btn-group" data-toggle="buttons" data-opposite-name="_L1"> 
     <label class="btn btn-xs"> 
      <input type="radio" name="_S1" value="a"> 
     </label> 
     <label class="btn btn-xs"> 
      <input type="radio" name="_S1" value="b"> 
     </label> 
     <label class="btn btn-xs"> 
      <input type="radio" name="_S1" value="c"> 
     </label> 
     </div> 
    </td> 
    </tr> 
</table> 


$('input:radio').change(function() { 
    var opposite = $(this).parent().closest('div').data("opposite-name"); 

    if ($('*[name="' + opposite + '"]').val() != $(this).val()) { 
    $('*[name="' + opposite + '"][value="' + $(this).val() + '"]').click(); 
    } 
}); 

回答

1

您需要测试:checked单选按钮值。因此,条件应该是

if($('*[name="' + opposite + '"]:checked').val() != $(this).val()) 

此外,而不是执行click(),你应该设置checked属性。

完整代码

$('input:radio').change(function() { 
    var opposite = $(this).closest('div').data("opposite-name"); 
    if ($('*[name="' + opposite + '"]:checked').val() != $(this).val()) { 
     $('*[name="' + opposite + '"][value="' + $(this).val() + '"]').prop('checked', true); 
    } 
}); 

Updated Fiddle

0

什么这部分应该怎么做?

if ($('*[name="' + opposite + '"]').val() != $(this).val())

删除此代码工作正常。