2017-02-12 94 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())

刪除此代碼工作正常。