2

我想捕捉复选框更改并捕捉选中或未选中复选框的索引。我想知道这是否可以。

$("input[type='checkbox']").change(function () {
  $("input[type='checkbox']").each(function (i) {
    //my code here
    switch (i) {
      case 0:
        break;
      case 1:
        break;
          .
          .
    }
  });
});

我的html是这样的:

<table>
<tr>
<td id='led' bgcolor=#cccccc>OFF</td>
<td><input type='checkbox' name='' value='' ></td>
</tr>
<tr>
<td id='led' bgcolor=#cccccc>OFF</td>
<td><input type='checkbox' name='' value='' ></td>
</tr>
<tr>
<td id='led' bgcolor=#cccccc>OFF</td>
<td><input type='checkbox' name='' value='' ></td>
</tr>
<tr>
</table>

所以我想检测选择了哪个框,然后将 LED 更改为 ON 和红色背景颜色。另一方面,如果未选中该框,我想将 LED 返回到 OFF 并将颜色更改为#cccccc

4

3 回答 3

5

没有更多细节,这是我能提供的最通用的代码(有更多信息很好,嗯,答案):

$('input:checkbox').change(function(){
    // caching the $(this) jQuery object, since we're using it more than once:
    var that = $(this),
         // index of element with regard to its sibling elements:
        index = that.index(),
        // index with regard to other checkbox elements:
        checkboxIndex = that.index('input:checkbox');

        if (this.checked){ // this.checked evaluates to a Boolean (true/false)
            // this block executed only if the checkbox *is* checked
        } else {
            // this block executed only if the checkbox is *not* checked
        }
});

编辑以解决(编辑/澄清)问题中的要求:

$('input:checkbox').change(function () {
    var that = this,
        $that = $(that),
        led = $that.closest('tr').find('td:first-child');
    led.removeClass('on off').addClass(function(){
        return that.checked ? 'on' : 'off';
    });
});

JS 小提琴演示

将上面的 jQuery 与下面的 CSS 结合起来:

.led,
.led.off {
    background-color: #ccc;
}

.led.on {
    color: #000;
    background-color: #f00;
}

和 HTML:

<table>
    <tr>
        <td class='led'>OFF</td>
        <td>
            <input type='checkbox' name='' value='' />
        </td>
    </tr>
    <tr>
        <td class='led'>OFF</td>
        <td>
            <input type='checkbox' name='' value='' />
        </td>
    </tr>
    <tr>
        <td class='led'>OFF</td>
        <td>
            <input type='checkbox' name='' value='' />
        </td>
    </tr>
</table>

请注意,我已经替换了id="led"wtih class="led",因为 anid 在文档中必须是唯一的。当涉及到 JavaScript 和 HTML 有效性时,这一点很重要。

参考:

于 2013-04-06T14:17:26.963 回答
0

如果选中或未在每个功能代码中使用此复选框,您可以执行以下操作:

if ( $(this).is(':checked') ) {
  // ...
} else {
  // ...
}
于 2013-04-06T14:09:47.373 回答
-1
$('input:checkbox').change(function() {
   if (this.checked) {
      // your code here
      alert(this.value);
   }
});
于 2013-04-06T14:21:51.340 回答