首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery复选框选择和更改类

jQuery复选框选择和更改类
EN

Stack Overflow用户
提问于 2011-10-06 17:38:01
回答 1查看 6.7K关注 0票数 2

我有一个这样的表单:

代码语言:javascript
复制
<form action='' onsubmit='void(0)' class="mainform">
                <label class="form3"><input type="checkbox"> One a fancy cross-browser styled checkbox</label>
                <label class="form3"><input type="checkbox"> two a fancy cross-browser styled checkbox</label>
                <label class="form3"><input type="checkbox"> Three a fancy cross-browser styled checkbox</label>
                <label class="form3"><input type="checkbox"> Four a fancy cross-browser styled checkbox</label>
                <label class="form3"><input type="checkbox"> Five a fancy cross-browser styled checkbox</label>
                <label class="form3"><input type="checkbox"> Six a fancy cross-browser styled checkbox</label>
                <label class="form3"><input type="checkbox"> Seven a fancy cross-browser styled checkbox</label>
                <label class="form3"><input type="checkbox"> eight a fancy cross-browser styled checkbox</label>
                <label class="form3"><input type="checkbox"> 9 a fancy cross-browser styled checkbox</label>
                <label class="form3"><input type="checkbox"> 10 a fancy cross-browser styled checkbox</label>
                <label class="form3"><input type="checkbox"> 11 a fancy cross-browser styled checkbox</label>
                <label class="form3"><input type="checkbox"> 12 a fancy cross-browser styled checkbox</label>
                <label class="form3"><input type="checkbox"> 13 a fancy cross-browser styled checkbox</label>
                <label class="form3"><input type="checkbox"> 14 a fancy cross-browser styled checkbox</label>
</form>

现在,我想这么做。当用户选中或取消选中复选框时,我希望向标签添加/删除类,以便在选中和未选中复选框时显示不同颜色的文本。

我试着像这样做:

代码语言:javascript
复制
$(document).ready(function(){
$('.form3').each(function(i,e) {
   if(checklist[i] == "")
    {
        $(this).find('input[type=checkbox]').attr('checked', false);
        $(this).appendTo($('form'));
        $(this).find('input[type=checkbox]').change(function() {
            $(this).closest('label').addClass("checkselected");
        });
        $(this).closest('label').removeClass("checkselected");

    }
    else
    {
        $(this).find('input[type=checkbox]').attr('checked', true);
        $(this).find('input[type=checkbox]').change(function() {
            $(this).closest('label').removeClass("checkselected");
        });
        $(this).closest('label').addClass("checkselected");
    }
});
});

现在我知道这可能不是正确的方法,因为我是在“$(‘.form3’).each(.each(i,e)”

这使得它可以工作,但只有一次。我怎样才能让它工作,即使在同一个复选框上多次点击。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-06 17:42:53

如果我没理解错的话,那么您要做的就是将一个单击事件处理程序绑定到所有的复选框,并向所单击的父label添加/删除一个类。如果这是正确的,那么你可以这样做:

代码语言:javascript
复制
$("input[type='checkbox']").change(function() {
   $(this).closest("label").toggleClass("someClass"); 
});

toggleClass方法消除了检查复选框是否选中的需要。您可以传递第二个参数来显示是否应该添加或删除类,所以如果您的一些复选框已经被选中,您可能想要使用它:

代码语言:javascript
复制
$("input[type='checkbox']").change(function() {
   $(this).closest("label").toggleClass("someClass", this.checked); 
});

下面是上述代码的working example

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7672538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档