【发布时间】:2012-04-20 20:45:15
【问题描述】:
我在名称和 id = selectArticle[] 的页面上有几个复选框。我需要的是,每当用户选中复选框时,某些元素应该附加 class="required" ,当我取消选中同一个框时,应该删除 class="required" 。
我尝试过 .addClass 和 .removeClass,但是每当我取消选中复选框时,.remove 效果就永远不会发生。但是,当我再次选中复选框时(在 .toggleClass 的情况下),该类会完美切换。似乎它仅适用于复选框“选中”事件而不是未选中。
通过警报,我已经检查过,检查/取消检查事件都已完美触发,但 .removeClass/.toggleClass 根本不起作用。
我该如何解决这个问题。请帮帮我!!!
$("input[name='selectArticle[]']:checkbox").live('change',function(){
var n = $("input[name='selectArticle[]']:checked").length;
var id=$(this).val();
var v = $(this).is(':checked');
//var vr= $("input[name='selectArticle[]']:unchecked").val();
//var vr= $(this).val();
alert(v);
alert(id);
//alert("url"+v);
if($(this).is(':checked'))
{
alert('#url'+v);
$("#title"+id).toggleClass('required');
$("#id"+id).toggleClass('required');
$("#url"+id).toggleClass('required url');
$("#category"+id).toggleClass('required');
$("#group"+id).toggleClass('required');
}
else
{
alert("balls"+id);
("#title"+id).toggleClass('required');
$("#id"+id).toggleClass('required');
$("#url"+id).toggleClass('required url');
$("#category"+id).toggleClass('required');
$("#group"+id).toggleClass('required');
}
// $("div").text(n + (n <= 1 ? " is" : " are") + " checked!" + " value :" + v);
});
更新:下面的答案
$("input[name='selectArticle[]']:checkbox").live('change',function(){
var n = $("input[name='selectArticle[]']:checked").length;
var id=$(this).val();
var v = $(this).is(':checked');
//var vr= $("input[name='selectArticle[]']:unchecked").val();
//var vr= $(this).val();
alert(v);
alert(id);
//alert("url"+v);
if($(this).is(':checked'))
{
alert('#url'+v);
$("#title"+id).addClass('required');
$("#id"+id).addClass('required');
$("#url"+id).addClass('required url');
$("#category"+id).addClass('required');
$("#group"+id).addClass('required');
}
if(!$(this).is(':checked'))
{
alert("balls"+id);
$("#title"+id).removeClass('required');
$("#id"+id).removeClass('required');
$("#url"+id).removeClass('required url');
$("#category"+id).removeClass('required');
$("#group"+id).removeClass('required');
}
// $("div").text(n + (n <= 1 ? " is" : " are") + " checked!" + " value :" + v);
});
【问题讨论】:
-
是的,它们是独一无二的......因此,当检查时,它们会正确触发
-
没有任何理由(坦率地说,没有任何借口)做一个
else if这只是if条件的反面。如果未选中,则if条件将失败,因此您只需要else。 -
同意,我目前只有一个“else”……但它不起作用:((
标签: jquery