按表格行时选中复选框

时间:2014-12-12 09:07:57

标签: javascript jquery html

我试图让我的用户按下表格行来检查复选框。

<table>
    <tr>
        <td onclick="toggleIt(this)">
            <input type="checkbox"/> Option 1
        </td>
    </tr>
    <tr>
        <td onclick="toggleIt(this)">
            <input type="checkbox"/> Option 2
        </td>
    </tr>
</table>
function toggleIt(myTd) {
   $(myTd).find('input').prop('checked', !$(myTd).find('input').prop('checked'));
}

这很有效,直到您按下复选框本身,然后它才能工作。我的猜测是复选框会自行检查,然后运行javascript并再次将其反转。

jsFiddle:http://jsfiddle.net/toxu1v2o/1/

编辑:很抱歉没有澄清,我需要能够按下整个td标记,这不适用于标签:http://jsfiddle.net/toxu1v2o/4/

SOLUTION:

不使用this,而是使用event。然后检查是否按下了复选框。像这样:

http://jsfiddle.net/toxu1v2o/17/

4 个答案:

答案 0 :(得分:3)

您不需要JavaScript - 只需将checkbox和文本包装在<label />元素中:

&#13;
&#13;
td {
  background-color: #F0F0F0;
}
label {
  padding: 40px;
  display: block;
}
&#13;
<table>
  <tr>
    <td>
      <label>
        <input type="checkbox" />Option 1
      </label>
    </td>
  </tr>
  <tr>
    <td>
      <label>
        <input type="checkbox" />Option 2
      </label>
    </td>
  </tr>
</table>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

你可以这样试试

&#13;
&#13;
<table>
    <tr>
        <td> 
            <label for="cb1">Op1</label>
            <input id="cb1" type="checkbox"/>
        </td>
    </tr>
    <tr>
        <td>
          <label for="cb2">Op2</label> 
          <input id="cb2" type="checkbox"/>
        </td>
    </tr>
</table>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

包裹你的input&amp;带有key标记的<label>。希望它能够发挥作用!

答案 3 :(得分:0)

这对你有用吗? 您使用的是什么版本的jquery?

$('td').click(function(){
   $('input[type="checkbox"]').attr('checked', 'true');
});