如何使IE11检测动态生成的元素上的事件?

时间:2019-05-07 17:08:27

标签: javascript jquery internet-explorer-11 dynamically-generated

我正在使用html和jquery创建一个学习模块。这是一系列情况,其中包含带有动态生成的“选择”元素和复选框的表单。通过以下功能,它们会在加载时附加到dom上的id上:

为清楚起见:b =分支,s =情况,a =答案,t =类型,l =标签,f =形式。

function appendAnswers() {
  for (var i = 0; i <= data.length - 1; i++) {
    if (data[i].b.indexOf(selectedBranch) !== -1 && data[i].s === situationToLoad) {
      var checkBox = '<span class="checkmark"></span><span>' + data[i].l + '</span>';
      var select = '<option value="' + data[i].a[0] + '"> Select Answer </option><option value="' + data[i].a[1] + '">' + data[i].a[0] + '</option><option value="' + data[i].a[2] + '">' + data[i].a[1] + '</option><option>' + data[i].a[2] + '</option>';
      (data[i].t === 'dropdown' ? $('#f' + data[i].f + data[i].q).append(select) : $('#f' + data[i].f + data[i].q).append(checkBox));
    }
  }
}

用户选择答案,然后单击检查按钮以检查答案。即使在以表单编号作为参数的html中,这也是onclick。

示例:onclick =“ checkAnswers('3849')”

如果正确,则将背景色设置为绿色,否则使用“正确”和“不正确”类将其设置为红色。

检查功能如下:

function checkAnswers(formToCheck) {
  for (var i = 0; i <= data.length - 1; i++) {
    if (data[i].b.indexOf(selectedBranch) !== -1 && data[i].s === situationToLoad && data[i].f === formToCheck) {
      var currentQuestion = data[i].f + data[i].q;
      var selectedAnswer = $('#f' + currentQuestion + ' > option:selected');
      if (data[i].t === 'dropdown') {
        if (selectedAnswer.text() === data[i].c) {
          $('#f' + currentQuestion).removeClass('incorrect').addClass('correct');
        } else {
          $('#f' + currentQuestion).removeClass('correct').addClass('incorrect');
        }
      } else if (data[i].t === 'checkbox') {
        $('#f' + currentQuestion + '>.checkmark').removeClass('incorrect');
        if ($('#f' + currentQuestion + '>input').is(':checked').toString() === data[i].c) {
          $('#f' + currentQuestion + '>.checkmark').addClass('correct');
        } else {
          $('#f' + currentQuestion + '>.checkmark').addClass('incorrect');
        }
      } else {
        console.log("Error: The answer's type is undefined!");
      }
    }
  }
}

我的问题是,当我单击按钮以检查我的答案时(当然,仅在IE中...:/),什么都没有发生,并且控制台中也没有任何错误。我在控制台上记录了不正确/正确的消息,看来它可以正常工作,但是“正确/不正确”的类并未添加到元素中。你们以前有没有处理过这样的错误?

谢谢!

*编辑添加了变量,以提高可读性

0 个答案:

没有答案