我具有删除表单中的字段的功能,该字段在Firefox中有效,但在Chrome中不起作用。

function activeDelete(del) {
    $('[data-delete="' + del + '"]').click(function(event) {
        deleteField(event);
    });
}

function deleteField(event) {
    if ((members - 1) >= 3) {
        members -= 1;
        var i = $(event.target).data('delete');
        console.log(i)
        var currentdiv = $('[data-div="' + i + '"]');
        currentdiv.remove();
        $("#rollWheel").val("Roll the wheel ! (" + members + " members)");
    } else {
        $('.errors').remove();
        $('#firstCard').append('<div class="errors animated fadeOut">3 participants minimum.</div>');
    }


  }

activeDelete(1);

我记录了i变量,它是undefined(在Chrome中)。我在本地和网站上进行了测试。

我在这里想念什么?

最佳答案

您应该在这里使用currentTarget而不是target,但是我建议您使用$(this)

最小变化:

  $(event.currentTarget).data('delete');

建议的更改:
function activeDelete(del) {
  $('[data-delete="' + del + '"]').click(function(event) {
    deleteField($(this)); // see here the parameter
    event.preventDefault();
  });
}

function deleteField(obj) {
  if ((members - 1) >= 3) {
    members -= 1;
    var i = obj.data('delete'); // see here the getter
    console.log(i)
    var currentdiv = $('[data-div="' + i + '"]');
    currentdiv.remove();
    $("#rollWheel").val("Roll the wheel ! (" + members + " members)");
  } else {
    $('.errors').remove();
    $('#firstCard').append('<div class="errors animated fadeOut">3 participants minimum.</div>');
  }


}

activeDelete(1);

关于javascript - 为什么我的event.target数据无法在Chrome中使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35404862/

10-10 00:26