选中复选框时添加类的Javascript

时间:2011-08-28 19:12:15

标签: javascript jquery checkbox

我有这段代码:

<div class="quote-box-col14">
<label for="seo" class="quote-service-seo">SEO</label>
<input type="checkbox" name="seo" id="seo" value="Y" class="checkbox-seo" />
</div>

当选中复选框时,有人可以帮助添加“已选择”类的JavaScript吗?

由于

7 个答案:

答案 0 :(得分:8)

这个jQuery会这样做:

$('#seo').change(function(){
    if($(this).is(":checked")) {
        $(this).addClass("checked");
    } else {
        $(this).removeClass("checked");
    }
});

有关工作示例,请参阅this jQuery fiddle

编辑:

如果您也需要在IE中使用它,请改为使用click事件:

$('#seo').click(function(){
    if($(this).is(":checked")) {
        $(this).addClass("checked");
    } else {
        $(this).removeClass("checked");
    }
});

答案 1 :(得分:2)

您可以从中推断出:jQuery toggleClass and check checkbox

但实际上,您可以使用toggleClass来切换特定的CSS类:

$("#seo").click(function() {
    $(this).toggleClass("cssClassToToggle");
});

或者使用addClass仅添加新类:

$("#seo").click(function() {
    $(this).addClass("cssClassToToggle");
});

如果您正在谈论一系列复选框,您也可以使用$(":checkbox")进行定位。

答案 2 :(得分:2)

纯JavaScript(适用于HTML5)

  document.getElementById ('seo').addEventListener ('click', function (ev) {
    ev.target.parentNode.classList[ ev.target.checked ? 'add' : 'remove'] ('selected');
  }, false);

还有一个classList.toggle函数,但复选框和classList可能会失去同步的危险。

答案 3 :(得分:2)

这是纯粹的js,当选中或取消选中任何复选框时,它将用于添加和删除所选类。

工作示例:http://jsfiddle.net/S9tSS/

var inputs = document.getElementsByTagName("input");
var checkboxes = [];

for (var i = 0; i < inputs.length; i++) {
  if (inputs[i].type == "checkbox") {
    checkboxes.push(inputs[i]);
    if (inputs[i].checked) {
      checked.push(inputs[i]);
    }
  }
}

for (var j = 0; j < checkboxes.length; j++) {
    checkboxes[j].onclick = function() {
        if (this.checked == true) {
            this.className += " selected";
        } else {
            removeClassName(this, 'selected');
        }
    }
}

function removeClassName(e,t) {
    if (typeof e == "string") {
        e = xGetElementById(e);
    }
    var ec = ' ' + e.className.replace(/^\s+|\s+$/g,'') + ' ';
    var nc = ec;
    if (ec.indexOf(' '+t+' ') != -1) {
        nc = ec.replace(' ' + t + ' ',' ');
    }
    e.className = nc.replace(/^\s+|\s+$/g,'');
    return true;
}

来源:......好吧......我会发布它们,但我是一个新用途,不能发布两个以上的链接。

答案 4 :(得分:1)

使用jQuery:

$('input[type="checkbox"]').change(function() {
    if (this.checked) {
        $(this).addClass('checked');
    } else {
        $(this).removeClass('checked');
    }
});

答案 5 :(得分:1)

$('#seo').click(function() {
    if (this.checked) {
        $(this).addClass('selected');
    } else {
        $(this).removeClass('selected');
    }
});

答案 6 :(得分:1)

$('#seo').click(function(){
    $(this).toggleClass('selected', this.checked);
});