我有一个这样的表单:
<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>现在,我想这么做。当用户选中或取消选中复选框时,我希望向标签添加/删除类,以便在选中和未选中复选框时显示不同颜色的文本。
我试着像这样做:
$(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)”
这使得它可以工作,但只有一次。我怎样才能让它工作,即使在同一个复选框上多次点击。
发布于 2011-10-06 17:42:53
如果我没理解错的话,那么您要做的就是将一个单击事件处理程序绑定到所有的复选框,并向所单击的父label添加/删除一个类。如果这是正确的,那么你可以这样做:
$("input[type='checkbox']").change(function() {
$(this).closest("label").toggleClass("someClass");
});toggleClass方法消除了检查复选框是否选中的需要。您可以传递第二个参数来显示是否应该添加或删除类,所以如果您的一些复选框已经被选中,您可能想要使用它:
$("input[type='checkbox']").change(function() {
$(this).closest("label").toggleClass("someClass", this.checked);
});下面是上述代码的working example。
https://stackoverflow.com/questions/7672538
复制相似问题