0

我正在制作一个主干测验应用程序,它使用下面的 question_template 将问题附加到 div 中。回答第一个问题后,将附加第二个问题,将第一个问题推到下方,依此类推。一旦到达第三个问题,html 单选按钮就会中断。我无法为第三个问题选择顶部按钮(红色答案)。但是,一旦加载了第四个问题,并且第三个问题被按下,我就可以为第三个问题选择红色按钮(尽管您无法再提交,因为在回答问题后提交被设计禁用)。在第四个问题中,我无法选择前两个单选按钮中的任何一个。我在每个浏览器中都有同样的问题。我已经发布了加载第 3 和第 4 个问题的屏幕图像。我想知道是否有'

更新:在你阅读所有内容之前,知道单选按钮的问题只有在我使用 prepend 即 $('this.el').prepend 将问题呈现给 div 时才会发生,我想这样做以添加问题到顶部。如果我使用 append $('this.el').append... 单选按钮可以正常工作,但它不允许我在顶部添加新问题。

代码。![

<fieldset id="qbquestion">
    <legend>{{= question }}</legend>
      <ul>
    {{ _.each(answers, function(answer) { }}

<li><input type="radio" name="{{= question }}" value="{{= answer  }}"/> <label for="{{= answer  }}">{{= answer  }}</label></li>

{{ }); }}
    </ul>

</fieldset>

      <input type="button" class="action_button" value="Submit" id="answer">

</script>][1]

图片说明

对于“M 最喜欢的颜色是什么”这个问题,我无法选择“红色”按钮,直到它被按下。对于最重要的问题,我无法选择前两个按钮“粉红色”或“紫色”中的任何一个。目前数据库中只有四个问题。

在此处输入图像描述

更新这是问题“什么是 M 最喜欢的颜色”的“红色”单选按钮(无法选择的那个)的 CSS 样式。如果我检查不同的单选按钮,样式是相同的。

在此处输入图像描述

更新问题的 html,“什么是 M 最喜欢的颜色”在此处输入图像描述

QuestionView更新,在渲染函数中,如果我使用 $('this.el').append...,那么生成的单选按钮将起作用。但是,我想这样做$('this.el').prepend,将新问题添加到顶部。如果我使用前置,某些单选按钮不起作用。

var QuestionView = Backbone.View.extend({
    el: $(".east"), 
    initialize: function(){


    _.bindAll(this);
    this.compTemplates();
        this.model.bind("gameStartedEvent", this.render, this); 
    this.model.bind("guessCheckedEvent", this.nextQuestion, this);
    this.model.bind("nextQuestionReady", this.render, this);
    },

  events: {
      'click #answer': 'checkAnswer'

    },

  nextQuestion: function(){
    this.model.nextQuestion();
  },
  checkAnswer: function(e){
    $('#answer').attr("disabled", true);
    var selected = $("input[type='radio']:checked");
    var answer = selected.val();
    this.model.set({guess: answer});
     this.model.check();

  },
  compTemplates: function(){
    console.log("comp Templates in question view");
    _.templateSettings = {
        interpolate : /\{\{=(.+?)\}\}/g,
        escape : /\{\{-(.+?)\}\}/g,
        evaluate: /\{\{(.+?)\}\}/g
         };
    var template = $('#question_template').html();

    this.template = _.template(template);


  },

    render: function(response){

    var question = response.question; 
    var answers = response.answers;
    var link = response.link;
    this.correctanswer = response.correctanswer;

 $(this.el).append(this.template({ question: question, answers: answers, link: link})); 


    }


 });
4

1 回答 1

0

我改变了很多东西,但不幸的是我不确定哪一个解决了这个问题。一,我停止使用具有相同 id 的多个元素,因为建议 @mu 太短。我还更改了包含元素的一些位置样式,因为只有第三和第四个问题受到影响,这似乎是与分配给问题的空间量有关的问题。抱歉,我对 css 很垃圾,无法解释更多。我还new QuestionView();为每个问题创建了一个新视图,而不是再次使用相同的视图,但是,我认为这是一个完全由 css 引起的问题。

于 2013-02-05T22:14:42.297 回答