2

我试图首先清除所有类options,然后使用相应的字母将一个类添加到选项中。这是我的功能:

function setAnswer(b, c){
      $('#'+b+' .option').removeClass("answer");
      $('#'+b+' .option'+c).addClass("answer");  
  }

和表格

 <div id="belh" class="options">
                <label>a.</label><input class="option optiona"><input onClick="setAnswer(this.parentnode.id, this.classname)" type="radio" class="a" name="answer">&nbsp;
                <label>b.</label><input class="option optionb"><input onClick="setAnswer(this.parentnode.id, this.classname)" type="radio" class="b" name="answer">
                <div class="clear"></div>
                <label>c.</label><input class="option optionc"><input onClick="setAnswer(this.parentnode.id, this.classname)" type="radio" class="c" name="answer">&nbsp;
                <label>d.</label><input class="option optiond"><input onClick="setAnswer(this.parentnode.id, this.classname)" type="radio" class="d" name="answer">
                </div>

div 的 idbelh动态变化,所以我传递给函数中的this.parentnode.id变量b,所以我可以这样做:

 $('#'+b+' .option').removeClass("answer");

从所有选项元素中删除类
现在我传递this.classnamec所以我可以在这里使用字母 (a,b,c,d):

$('#'+b+' .option'+c).addClass("answer");

因此,如果单击带有类的单选框,则 div中具有类c的所有字段都将丢失类答案(如果有的话)。然后带有类的字段将添加类。(因为:)。出于某种原因,我的功能不起作用。我想我以错误的方式传递变量。optionbelhoptioncanswer$('#'+b+' .option'+c).addClass("answer");

4

2 回答 2

3

您应该编码this.classNameand this.parentNode.id,您还可以使用 jQuerychange事件方法和prev方法来选择单击输入的上一个兄弟:

$('#belh input[name=answer]').change(function(){
    $('input.option').removeClass('answer');
    $(this).prev().addClass('answer')
})
于 2012-10-07T20:32:53.960 回答
1

您是否尝试过切换类名?http://api.jquery.com/toggleClass/

于 2012-10-07T22:35:01.677 回答